我已經通過Tab控件的示例來保存多個視圖。但我的要求有點不同。將多個ViewModel綁定到每個命令上的Content Control
內容控制應該是顯示視圖的唯一地區,它必須根據指令,例如改變:提前新增,查看全部,搜索等。
感謝。
我已經通過Tab控件的示例來保存多個視圖。但我的要求有點不同。將多個ViewModel綁定到每個命令上的Content Control
內容控制應該是顯示視圖的唯一地區,它必須根據指令,例如改變:提前新增,查看全部,搜索等。
感謝。
在您的視圖模型,你希望有一個屬性:
private object content;
public object Content
{
get { return content; }
set
{
this.content = value;
OnPropertyChanged("Content");
}
}
然後在你的主窗口(或您的內容被託管)添加一個ContentControl中:
<ContentControl Content="{Binding Path=Content}"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Center"
Focusable="False"/>
主要視圖模型將維護已知ViewModel(View All,Search)的列表,並在相應的命令執行中將Content屬性設置爲其中一個ViewModel,Add New命令可能會創建AddNewViewModel的新實例並設置Content屬性。
在該ContentControl中位於把一些數據模板的資源映射的ViewModels相應視圖查看:
<DataTemplate DataType="{x:Type vm:AddNewViewModel}">
<AdornerDecorator>
<views:AddNewView DataContext="{Binding}"/>
</AdornerDecorator>
</DataTemplate>
這是我使用的,我的工作在嚮導的基本格局在這一刻。
我用了一個ObservableCollection<ViewModelBase>
。 然後在每個命令(AddNew,ViewAll等)上添加ViewModel到集合中。但是我在添加之前清除了收藏。
這並沒有太大的意義,因爲你正在使用一個集合,但它會實現你想要的 – benPearce 2010-09-16 23:00:30
謝謝benPearce,我以另一種方式解決了它。 – dpatra 2010-09-16 22:34:18