2013-02-25 96 views
0

在WPF我有以下結構:WPF元素與文本菜單綁定

UserControl>Grid>TabControl>DataGrid>ContextMenu

我想有我ContextMenuDataContext一樣的一個我Grid。這是我當前如何試圖做到這一點:

<ContextMenu Name="contextMenu" DataContext="{Binding ElementName=MainGrid, Path=DataContext}"> 

,但我得到了以下錯誤:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MainGrid'. BindingExpression:Path=DataContext; DataItem=null; target element is 'ContextMenu' (Name='contextMenu'); target property is 'DataContext' (type 'Object') 

我需要做這種方式爲DataGridDataContext是不同於「 MainGrid「,而ContextMenu位於DataGrid

任何人都可以提供給我一些指導,因爲根據我這是正確的?

回答

0

我覺得這不是必需的。設置在父級別的DataContext已經可供兒童使用。如果需要,您可以覆蓋。但在你的情況下,你想使用相同的Datacontext。

+0

對不起,我沒有提到這一點,'了'DataGrid'的DataContext'是從「MainGrid」不同,和'ContextMenu'在DataGrid中' '。 – 2013-02-25 08:30:37

+0

Manish 2013-02-25 08:47:56

+0

不,我已經嘗試過,錯誤依然存在! – 2013-02-25 08:53:15

0

通常你會將一個屬性綁定到你指定的DataContext,而不是將DataContext本身綁定到另一個DataContext。但是,在你的情況,這應該幫助:

DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}, Path=DataContext}" 
+0

我其實已經嘗試過,但錯誤仍然一樣! – 2013-02-25 08:52:46

+0

好的,也許你是對的,但請注意,你描述的錯誤是由於ElementName =「MainGrid」造成的。在上面的Binding表達式中,沒有指定Elementname,也沒有指定「MainGrid」。所以有可能你會忽略這個綁定是鍵入「Grid」。只是一個提示( - ; – deafjeff 2013-02-25 08:58:20