2009-12-13 54 views
3

我有一个包含TreeView控件的用户控件。我正在使用MVVM模式。 我想在不同的窗口中重用此用户控件,每次将usercontrol绑定到不同的数据上下文。绑定WPF TreeView与通用视图模型

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

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

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


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

     </TreeView> 

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

    </UserControl> 

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

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

是否有可能为这个usercontrol编写一个通用的ViewModel,以便我可以将不同类型的数据绑定到TreeView? 如果我的问题没有被理解,请让我知道。

回答

2

如果我正确地读这篇文章,你有你想重用,并设置其DataContext的是不同的视图模型的在应用程序的不同部分用户控件...

既如此,是的,你当然可以指定不同类型,为您的TreeView的ItemsSource时的名单,但:

  • 列表属性必须每个视图模型内统一进行命名
  • 你需要描述一个DataTemplate(或HierarchicalDataTemplate)为您希望通过每个类型进入哟内的TreeView乌尔控制的XAML
  • 您可能会发现绑定到ObservableCollection<T>List<T>带来了更大的奖励,如果你想从集合添加/删除项目/并希望看到这些变化体现在UI

希望这有助于:)