【问题标题】:Binding WPF TreeView with generic viewmodel将 WPF TreeView 与通用视图模型绑定
【发布时间】:2010-12-26 03:16:05
【问题描述】:

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

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

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

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


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

        </TreeView>

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

   </UserControl>

在窗口 1 中,我想将 List&lt;ObjectA&gt; 绑定到 TreeView。

在窗口 2 中,我想将 List&lt;ObjectB&gt; 绑定到 TreeView。

是否可以为这个用户控件编写一个通用的 ViewModel,以便我可以将不同类型的数据绑定到 TreeView? 如果我的问题不明白,请告诉我。

【问题讨论】:

    标签: wpf mvvm treeview


    【解决方案1】:

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

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

    • 列表属性在每个 ViewModel 中的命名必须一致
    • 您需要为您希望传递到控件 xaml 中 TreeView 的每种类型描述一个 DataTemplate(或 HierarchicalDataTemplate)
    • 如果您希望在集合中添加/删除项目并希望看到这些更改反映在 UI 中,您可能会发现绑定到 ObservableCollection&lt;T&gt;List&lt;T&gt; 带来更大的回报

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2012-09-29
      • 2023-03-06
      • 2011-10-07
      • 2017-02-15
      • 1970-01-01
      相关资源
      最近更新 更多