0
我是C#的新手,並且正在嘗試通過構建簡單的Crud應用來學習MVVM。在我的應用程序中,我想要一系列按鈕,當用戶點擊它時會加載該用戶控件。所以當你點擊「Add Item」時,它會用AddItemView代替現有的控件。我想知道我如何去做這件事?到目前爲止,我所見過的很多mvvm教程只是在MainMindow上有一個單獨的控件。MVVM交換控件
我是C#的新手,並且正在嘗試通過構建簡單的Crud應用來學習MVVM。在我的應用程序中,我想要一系列按鈕,當用戶點擊它時會加載該用戶控件。所以當你點擊「Add Item」時,它會用AddItemView代替現有的控件。我想知道我如何去做這件事?到目前爲止,我所見過的很多mvvm教程只是在MainMindow上有一個單獨的控件。MVVM交換控件
對於這類任務,您通常使用ContentControl
。將控件的Content
屬性綁定到ViewModel的一個屬性(例如,CurrentViewModel
),並在可以顯示在ContentControl
中的每種ViewModel的資源中定義DataTemplates
。當您將一個ViewModel分配到CurrentViewModel
時,ContentControl
將爲內容選擇合適的DataTemplate
。
主視圖模型
private object _currentViewModel;
public object CurrentViewModel
{
get { return _currentViewModel; }
set
{
if (value != _currentViewModel)
{
_currentViewModel = value;
OnPropertyChanged("CurrentViewModel");
}
}
}
的App.xaml
<Application.Resources>
<DataTemplate DataType="{x:Type vm:AddItemViewModel}">
<v:AddItemView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:FooViewModel}">
<v:FooView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:BarViewModel}">
<v:BarView />
</DataTemplate>
...
</Application.Resources>
主視圖
...
<ContentControl Content="{Binding CurrentViewModel}" />
...
在你的情況下,命令爲「添加項目」按鈕,您將AddItemViewModel
的實例分配給CurrentViewModel
假設我有一個簡單的數據對象,而我有一組項目和一些功能。我可以切換出UserControl而不是ViewModel,每個UserControl甚至可以擁有它自己的ViewModel等等? – 2011-02-16 15:13:58