【发布时间】:2014-12-05 05:21:33
【问题描述】:
我有一个主视图,其中有一个选项卡控件。每个选项卡的内容是一个树视图,存在于不同的视图中。 这是我使用其他 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
搜索方法与类型无关。这取决于其特定模型中存在的类型。执行搜索所需的数据存在于这个视图模型中。
这是有效的。现在我必须将此功能扩展到具有自己的树视图(内容类型与 FirstTreeView 不同)的其他视图(SecondListView、ThirdListView 等)。我该怎么做?我应该把代码和命令放在哪里?
【问题讨论】:
-
“SearchFamiltyTreeCommand 是一个派生自 ICommand 的类,execute 方法调用一个函数来执行搜索。” 这是单独编码的吗?如果是的话,我希望你可以在你的视图中单独使用它。
-
这存在于 FirstViewModel 中。我想我最好也添加该代码。