我有一個主視圖,我有一個選項卡控件。每個選項卡的內容都是以不同視圖呈現的樹形視圖。 這是我在其中使用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