看起來像一個簡單的任務:我正在構建一個使用MVVM模式的wpf應用程序。我想要的是根據用戶輸入動態地改變視圖的一部分,使用不同的UserControls。WPF和MVVM:將UserControl動態綁定到XAML
比方說,我有2個用戶控件,一個用按鈕,另一個用標籤。 在主視圖中我有一個容器。繼XAML「作品」之後:
<GroupBox Header="container" >
<local:UserControlButton />
</GroupBox>
和一個帶有按鈕的UserControl元素彈出。如果我將它改爲另一個,它也可以。 問題是如何動態地提供該groupbox。如果我把類似的東西在我的模型視圖:
private UserControl _myControl;
public UserControl MyControl
{
get
{
return _myControl;
}
set
{
_myControl= value;
InvokePropertyChanged("MyControl");
}
}
,改變我的觀點XAML喜歡的東西:
<GroupBox Header="container" >
<ItemsControl ItemsSource="{Binding MyControl}" />
</GroupBox>
和命令用戶控件給它的按鈕或標籤:什麼也沒發生,雖然「MyControl」變量已設置,並且「調用屬性已更改」。
[MVVMLight使用兩個視圖](http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views)有通讀。它解釋了基本概念。之後將其應用於您的案例應該很簡單。順便說一句,不知道你是什麼模型視圖。你的意思是'ViewModel'?如果是這樣的話,你首先不會在虛擬機中擁有UI元素。通讀鏈接的文章,也可能是前一篇文章,以幫助 – Viv
請參閱我的回答[通過主窗口中包含的多個子視圖導航](http://stackoverflow.com/questions/23137371/navigating-through-multiple-在主窗口中包含子視圖/ 23137536#23137536)的問題。雖然它與您的示例並不完全相同,但您仍應該能夠通過遵循此處的建議來滿足您的要求。 – Sheridan
@Sheridan +1我正準備鏈接到你的答案...... –