我在将ItemsSource
ListView
绑定到某个媒体资源时遇到问题。
我已将ListView
绑定到viewmodel属性:
<ListView ItemsSource="{Binding itemgrid, Source={StaticResource viewmodel}}">
<ListView.ItemTemplate>
<DataTemplate>
<local:UCListFormat></local:UCListFormat>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我有2个型号,
1 itemmodel
2人模型
我还有一个菜单可以打开1个名为“表单”的视图,但会根据菜单名称生成ListView
。
例如:
菜单人
ListView
ObservableCollection<person>
菜单项
ListView
ObservableCollection<item>
on ListView
我将itemgrid声明为ObservableCollection<object>
然后我用itemgrid=ObservableCollection<person>
填写,或者从菜单项填写。
我用itemgrid=ObservableCollection<item>
填充了项目网格
基于财产。
我该怎么做?因为itemgrid不起作用
ObservableCollection<object>
,
如果我更改itemgrid=ObservableCollection<person>
,我只能在运行时显示1.
在代码背后我可以这样做
if (menu=="person")
{listview.itemsource=ObservableCollection<person>}
else
{listview.itemsource=ObservableCollection<item>}
关于XAML我不知道该怎么做
答案 0 :(得分:0)
您可以删除显式ListView
DataTemplate
,并在您的资源中声明DataTemplates,告诉WPF如何显示各种VM
<DataTemplate DataType="{x:Type vm:Person}">
<view:PersonView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:Item}">
<view:ItemView />
</DataTemplate>