2011-03-28 53 views
1

我有一個Silverlight應用程序。這個應用程序有一個UserControl。這個UserControl有一個我們將調用ParentViewModel分配給它的DataContext的類型的視圖模型。另外,這個UserControl有兩個子UserControl元素。這些UserControl元素中的每一個都有一個我們將調用ChildViewModel分配給它的DataContext的類型的視圖模型。Silverlight中的DataContext繼承

當用戶單擊子UserControl元素上的按鈕時,我希望它影響第二個子UserControl。我有這個工作。我的問題是,我的ParentViewModel有一個屬性,我想要綁定到我的每個子UserControl元素。我如何綁定到我的ParentViewModel中的屬性?我一直認爲DataContext是通過樹來傳播的。但似乎我錯了。

它甚至可以做我想要的嗎?謝謝!

回答

1

從視圖模型中創建層次結構。每個子視圖模型都包含父項引用。 F.i.

public class ChildViewModel1 :... 
{ 
public ChildViewModel1(ParentViewModel parentViewModel) 
{ 
_parentViewModel = parentViewModel; 
} 
private ParentViewModel _parentViewModel; 
public ParentViewModel ParentViewModel {get {return _parentViewModel; }} 
} 

在XAML:

<TextBlock Text={Binding ParentViewModel.NeededProperty}/>