将WPF TreeView与通用viewmodel绑定

将WPF TreeView与通用viewmodel绑定,wpf,mvvm,treeview,Wpf,Mvvm,Treeview,我有一个usercontrol,其中包含一个TreeView控件。我使用的是MVVM模式。 我希望在不同的窗口中重用此用户控件,每次都将usercontrol绑定到不同的datacontext <UserControl Name="UserControl1".......> .............. <TreeView ItemSource={Binding ...}...> <Hierarch

我有一个usercontrol,其中包含一个TreeView控件。我使用的是MVVM模式。 我希望在不同的窗口中重用此用户控件,每次都将usercontrol绑定到不同的datacontext

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

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

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


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

        </TreeView>

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

   </UserControl>

..............
.............. 
在窗口1中,我想将
列表
绑定到树视图

在窗口2中,我想将
列表
绑定到树视图

是否可以为此usercontrol编写通用ViewModel,以便将不同类型的数据绑定到TreeView??
如果我的问题不明白,请务必让我知道。

如果我没有看错,您有一个要重用的UserControl,将其DataContext设置为应用程序不同部分中的不同ViewModel

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

  • 列表属性必须在每个ViewModel中一致命名
  • 您需要为希望传递到控件xaml中的TreeView中的每种类型描述一个DataTemplate(或HierarchycalDataTemplate)
  • 如果您希望在集合中添加/删除项目,并希望在UI中看到这些更改,您可能会发现绑定到
    可观察集合
    比绑定到
    列表
    带来更大的回报
希望这有帮助:)