Wpf 什么';使用TreeView对所选项目更改作出反应的首选方法是什么?
选择TreeViewItem后,更新其他控件的首选方法是什么 目前我的树视图中有以下结构Wpf 什么';使用TreeView对所选项目更改作出反应的首选方法是什么?,wpf,data-binding,mvvm,treeview,routed-events,Wpf,Data Binding,Mvvm,Treeview,Routed Events,选择TreeViewItem后,更新其他控件的首选方法是什么 目前我的树视图中有以下结构 DataStoreType - (DataStoreTypeViewModel) DataStoreEntry - (DataStoreEntryViewModel) DataStoreEntry - (DataStoreEntryViewModel) DataStoreEntry - (DataStoreEntryViewModel) DataStoreType - (DataSt
DataStoreType - (DataStoreTypeViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreType - (DataStoreTypeViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
它使用MVVM模式,两种treeview项类型中的每一种都由特定的视图模型填充(“代码”>“数据存储类型视图模型”和“代码”>“数据存储视图模型”)
当用户选择其中一个节点(一个数据存储类型
或一个数据存储条目
)时,我需要能够使用基于选择的信息填充列表控件。那么名单呢
控件需要能够显示两组不同的数据
我读过一些关于路由事件的书,但不确定这是不是正确的方法
谢谢Kieron如果采用所采取的方法,则可以在所选项目的视图模型上设置属性。根据
DataStoreType
和DataStoreEntry
之间的关系,可以在视图模型上使用相同的属性来存储基类或接口
在属性中,您可以通过设置列表控件绑定到的集合作出反应
虚拟机
public-IDataStore-SelectedStore
{
获取{return\u store;}
设置
{
_存储=价值;
RaisePropertyChanged(“SelectedStore”);
RaisePropertyChanged(“列表项”);
}
}
公共IEnumerbale列表项
{
得到
{
如果(_store==null)
返回可枚举的.Empty();
其他的
退货_store.Items;
}
}
XAML
由于RaisePropertyChanged(“ListItems”)
在树视图中所选项目的setter中,列表框(假设您正在使用类似的内容)将使用新数据更新。
在本设计中,我从DataStoreTypeViewModel
或datastoreryviewmodel
中检索项目列表,如果数据根据视图模型类型而变化,则更好地进行封装。只要让他们实现一个像IDataStore
这样的接口就可以了
只要调整它来满足你的需要
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;
}
}
<ListBox ItemsSource="{Binding ListItems}" />