0

在 WPF 中,我有以下结构:

UserControl> Grid> TabControl> DataGrid>ContextMenu

我想要我的DataContext和我ContextMenu的一样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')

我需要这样做,因为 的DataContextDataGrid“MainGrid”不同,ContextMenuDataGrid.

谁能给我一些指导,因为我认为这是正确的?

4

2 回答 2

0

我觉得这不是必需的。在父级设置的 DataContext 已经可供子级使用。如果需要,您可以覆盖。但在您的情况下,您想使用相同的 Datacontext。

于 2013-02-25T08:26:52.263 回答
0

通常,您会将属性绑定到您的特定 DataContext,而不是将 DataContext 本身绑定到另一个 DataContext。但就您而言,这应该会有所帮助:

DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}, Path=DataContext}"
于 2013-02-25T08:34:53.053 回答