更改itemsource绑定属性mvvm

时间:2015-12-22 05:33:02

标签: mvvm binding

我在将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我不知道该怎么做

1 个答案:

答案 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>