2012-11-27 44 views
1

我需要在wpf xaml中訪問父級的DataContext。整個xaml頁面代碼是動態的。所以不知道父母的類型。如何在父類型可以不同時訪問wpf中父類的DataContext?

我寫這

<Grid DataContext={Binding Path=.}> 

這是正確的?

+1

嘗試一下 - 如果它的工作正確 – MikroDel

+1

可能的重複:[WPF Databinding:如何訪問「父」數據上下文?](http://stackoverflow.com/questions/1127933/wpf-databinding-how- do-i-access-the-parent-data-context) – khellang

回答

6

請記住,如果DataContext未明確設置,它將繼承其父項DataContext。如果由於某種原因,這不起作用,您應該看看與RelativeSource的綁定。

像這樣的東西可能會奏效:

<Grid DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext}}" 

鑑於Grid具有Window類型的祖先(我認爲所有的控制應該有)。

+0

謝謝。默認情況下它起作用。只是想知道如果AncestorType不是父窗口,我設置綁定,如你所說,然後會發生什麼? – techfun

+1

如果你指定'Window'的'AncestorType',並且元素沒有'Window'類型的祖先(我猜它永遠不會發生),綁定將不起作用。這與綁定到不存在的「路徑」時得到的行爲相同。再次,閱讀[RelativeSource MarkupExtension文檔](http://msdn.microsoft.com/en-us/library/ms743599.aspx),它會告訴你所有關於'AncestorType'和'AncestorLevel'的知識。 。 – khellang