将WPF TreeView与通用视图模型绑定

时间:2009-12-13 07:54:10

标签: wpf mvvm treeview

我有一个包含TreeView控件的usercontrol。我正在使用MVVM模式。 我想在不同的窗口中重用这个用户控件,每次将usercontrol绑定到不同的datacontext。

   <UserControl Name="UserControl1".......>

      ..............

        <TreeView ItemSource={Binding ...}...>


             <HierarchicalDataTemplate...........\>

        </TreeView>

      .............. 

   </UserControl>

在窗口1中,我想将List<ObjectA>绑定到TreeView。

在Window 2中,我想将List<ObjectB>绑定到TreeView。

是否可以为此用户控件编写通用的ViewModel,以便我可以将不同类型的数据绑定到TreeView?   如果我的问题没有被理解,请告诉我。

1 个答案:

答案 0 :(得分:2)

如果我正确读取这个内容,你有一个你希望重用的UserControl,将其DataContext设置为应用程序不同部分的不同ViewModel ......

即是如此,是的,您当然可以将不同类型的列表指定为TreeView的ItemsSource,但是:

  • 必须在每个ViewModel中一致地命名list属性
  • 您需要为控件的xaml中传递给TreeView的每种类型描述一个DataTemplate(或HierarchicalDataTemplate)
  • 如果您希望向集合添加/删除项目并希望在UI中反映这些更改,您可能会发现绑定到ObservableCollection<T>会带来比List<T>更大的奖励

希望这会有所帮助:)