我有一个主视图,我有一个选项卡控件。每个选项卡的内容都是以不同视图呈现的树形视图。 这是我在其中使用2个其他视图的主视图如何为多个视图模型实现相同的搜索功能?
在我的FirstListView中,我有一个树视图,一个文本框和一个按钮。
<TabControl x:Name ="MainTab" SelectionChanged="OnTabSelectionChanged">
<TabItem Header="First" >
<view:FirstListView x:Name="FirstView"/>
</TabItem>
<TabItem Header="Second" >
<view:SecondListView x:Name ="SecondView"/>
</TabItem>
</TabControl>
文本框和按钮被添加到执行在树搜索。
与FirstListView关联的视图模型具有在其构造器中初始化的命令。
_searchCommand = new SearchFamilyTreeCommand(this);
SearchFamiltyTreeCommand是一个从ICommand派生的类,execute方法调用一个函数来执行搜索。这存在于FirstViewModel中。
#region SearchCommand
public ICommand SearchCommand
{
get { return _searchCommand; }
}
private class SearchFamilyTreeCommand : ICommand
{
readonly FunctionListViewModel _functionTree;
public SearchFamilyTreeCommand(FunctionListViewModel functionTree)
{
_functionTree = functionTree;
}
public bool CanExecute(object parameter)
{
return true;
}
event EventHandler ICommand.CanExecuteChanged
{
add { }
remove { }
}
public void Execute(object parameter)
{
_functionTree.PerformSearch();
}
}
#endregion
搜索方法不是类型独立的。它取决于其特定模型中的类型。此视图模型中存在执行搜索所需的数据。
这是行得通的。现在我必须将这个功能扩展到其他视图(SecondListView,ThirdListView等),它们有自己的TreeView(内容的类型与FirstTreeView不同)。我该怎么做?我应该在哪里放置代码和命令?
**“SearchFamiltyTreeCommand是从ICommand派生的类,execute方法调用执行搜索的函数。”** 这是单独编码的吗?如果是的话,我希望你可以在你的观点中单独使用它。 – 2014-12-05 05:35:51
这存在于FirstViewModel中。我想我更好地添加该代码。 – 2014-12-05 05:39:02