2015-12-22 211 views
1

我有问题绑定ItemsSourceListView属性。 我已经绑定我ListView到视图模型属性:更改itemsource绑定属性mvvm

<ListView ItemsSource="{Binding itemgrid, Source={StaticResource viewmodel}}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <local:UCListFormat></local:UCListFormat> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

我有2个型号,

  • 1 itemmodel

  • 2 personmodel

我也有一个菜单打开1个名为'form'的视图,但会生成ListView基于菜单名称。

例如:

菜单人

  • 开放的 '形式',并产生ListViewObservableCollection<person>

菜单项

  • 开放的 '形式',并产生ListViewObservableCollection<item>

ListView我宣布itemgrid为ObservableCollection<object>

然后我写些itemgrid=ObservableCollection<person>或者如果菜单项。 我使用itemgrid=ObservableCollection<item> 根据属性填充itemgrid。

我该怎么做?因为它不工作,如果itemgrid是 ObservableCollection<object>,

如果我更改itemgrid=ObservableCollection<person>,我只能在运行时显示1。在后面的代码,我可以做到这一点像这样

if (menu=="person") 
{listview.itemsource=ObservableCollection<person>} 
else 
{listview.itemsource=ObservableCollection<item>} 

在XAML我不知道该怎么办呢

+0

目前还不清楚你在问什么,你可以多一些代码? – bit

+0

sory,你可以再看看这个。我给我更多的细节问题... thx – RIP

回答

0

可以删除明确ListViewDataTemplate,并在你的资源某处声明的DataTemplates

告诉WPF如何显示各种虚拟机

<DataTemplate DataType="{x:Type vm:Person}"> 
    <view:PersonView /> 
</DataTemplate> 

<DataTemplate DataType="{x:Type vm:Item}"> 
    <view:ItemView /> 
</DataTemplate> 
+0

对不起,我真的不明白。在datatemplate我打算使用itemtemplate选择器动态更改列绑定。 但我有问题itemsource绑定如何可以接受2模型 – RIP