选择TreeViewItem后,更新其他控件的首选方法是什么?
目前我在TreeView中有以下结构
DataStoreType - (DataStoreTypeViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreType - (DataStoreTypeViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
DataStoreEntry - (DataStoreEntryViewModel)
它正在使用MVVM模式,两个树视图项类型中的每一个都由特定的视图模型填充(DataStoreTypeViewModel
和DataStoreEntryViewModel
)。
当用户选择其中一个节点(DataStoreType
或DataStoreEntry
)时,我需要能够根据选择信息填充列表控件。所以列表
控件需要能够显示两组不同的数据。
我已经阅读了一些关于RoutedEvents
的内容,但不确定这是否可行......
感谢
基隆
答案 0 :(得分:0)
如果您采用here方法,则可以在所选项目的视图模型上设置属性。根据{{1}}和DataStoreType
之间的关系,您可以在视图模型上使用相同的属性来存储基类或接口。
在属性中,您可以通过设置列表控件绑定的集合来做出反应......
VM
DataStoreEntry
XAML
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;
}
}
由于树视图中所选项目的setter中的<ListBox ItemsSource="{Binding ListItems}" />
,RaisePropertyChanged("ListItems");
(假设您正在使用类似的东西)将使用新数据进行更新。
在这个设计中,我正在从ListBox
或DataStoreTypeViewModel
中检索项目列表,如果数据根据视图模型类型而变化,则这是更好的封装。让他们实现像DataStoreEntryViewModel
这样的界面。
只需调整它以满足您的需求。