我需要弄清楚如何在ViewModels之間進行通信。我是MVVM的新手,所以請客氣。MVVM模式,ViewModel DataContext問題
這裏有一個簡單化例如
類定義(假設我已經迷上在ParentViewModel的Child.PropertyChanged事件):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
這裏就是你的資源字典看到
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
和ChildView的代碼隱藏:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
明顯的問題是,當ChildView被實例化(通過從選擇的DataTemplate),它創建了一個新的ChildViewModel類和ParentViewModel不能訪問它。
所以,我怎麼能實例化視圖的DataContext的是導致要選擇的DataTemplate中原來的視圖模型?
一個顯而易見的解決辦法是mmerge在ChildViewModel到ParentViewModel的屬性,但我寧願分開,因爲重複使用。
我相信答案是微不足道的,我只是想知道它是什麼。 :)
在此先感謝。
順便說一句,我認爲你要想在代碼,以簡化的例子......對於「ChildView」之類的名字改變了你的類的名稱背後,是「QueueView」代替。 – 2009-05-05 16:45:45
這是一個錯誤? – 2009-05-05 16:45:57
是的,這是一個錯字。對不起:) – Jose 2009-05-07 12:45:41