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')

のは「MainGrid」とは異なりDataContext、 は にあるため、この方法で行う必要があります。DataGridContextMenuDataGrid

私によれば、これは正しいので、誰かが私にいくつかのガイダンスを提供できますか?

4

2 に答える 2

0

通常、プロパティを特定のDataContextにバインドし、DataContext自体を別のDataContextにバインドしません。しかし、あなたの場合、これは役立つはずです:

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

必須ではないと感じています。親レベルで設定された DataContext は、すでに子で使用できます。必要に応じてオーバーライドできます。しかし、あなたの場合、同じ Datacontext を使用したいと考えています。

于 2013-02-25T08:26:52.263 に答える