代码之家  ›  专栏  ›  技术社区  ›  Kieron

使用TreeView对选定项更改作出反应的首选方法是什么?

  •  0
  • Kieron  · 技术社区  · 14 年前

    目前我的树视图中有以下结构

    DataStoreType - (DataStoreTypeViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
    DataStoreType - (DataStoreTypeViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
        DataStoreEntry - (DataStoreEntryViewModel)
    

    它使用MVVM模式,两个treeview项类型中的每一个都由一个特定的视图模型( DataStoreTypeViewModel DataStoreEntryViewModel ).

    当用户选择其中一个节点时(或者 DataStoreType DataStoreEntry )我需要能够用基于选择的信息填充列表控件。所以名单 控件需要能够显示两组不同的数据。

    我读过一些关于 RoutedEvents ,但不确定这是不是一条路。。。


    基隆

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community T.Woody    7 年前

    如果你采取的方法 here 然后可以在选定项的视图模型上设置属性。取决于 DataStoreType DataStoreEntry

    在属性中,您可以通过设置列表控件绑定到的集合来作出反应。。。

    public IDataStore SelectedStore
    {
        get { return _store; }
        set 
        {
            _store = value;
            RaisePropertyChanged("SelectedStore");
            RaisePropertyChanged("ListItems");
        }
     }
    
     public IEnumerbale<string> ListItems
     {
         get 
         { 
              if(_store == null)
                   return Enumerable.Empty<string>();
              else 
                   return _store.Items; 
         }
     } 
    

    XAML公司

    <ListBox ItemsSource="{Binding ListItems}" />
    

    因为 RaisePropertyChanged("ListItems"); 在树视图中选定项的setter中 ListBox (假设您正在使用类似的内容)将使用新数据进行更新。 DataStoreTypeViewModel DataStoreEntryViewModel 如果数据根据视图模型类型而变化,则这是更好的封装。让他们实现一个接口 IDataStore

    只是调整它以适应你的需要。