我试图将ContextMenuItem属性绑定为DataGrid属性作为流:
<DataGrid Name="DG_Data" >
<DataGrid.Columns>
<DataGridTextColumn Header="COL1"/>
<DataGridTextColumn Header="COL2"/>
<DataGridTextColumn Header="COL3"/>
<DataGridTextColumn Header="COL4"/>
</DataGrid.Columns>
</DataGrid>
<Button Name="BTN_OpenContext" Content="CLICK TO OPEN">
<Button.ContextMenu>
<ContextMenu Name="CM_ContextMenu">
<MenuItem Header="{Binding ElementName=DG_Data,Path=Columns.Count,FallbackValue=BindingFailed}" />
</ContextMenu>
</Button.ContextMenu>
</Button>
我也尝试过对RelativeSource使用不同的方式
<MenuItem Header="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=2,AncestorType=FrameworkElement}, FallbackValue=BindingFailed}" />
我刚能够绑定到父项(ContextMenu)。
谢谢
答案 0 :(得分:1)
ContextMenu
不能使用DataGrid
绑定到ElementName
,但是不能绑定到父ContextMenu
的{{1} }(即PlacementTarget
)。
因此您可以将Button
的{{1}}属性绑定到Button
,然后从Tag
绑定到DataGrid
属性:>
Tag