我试图将上下文属性绑定到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>
我也尝试过使用私人的不同方式
<MenuItem Header="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorLevel=2,AncestorType=FrameworkElement}, FallbackValue=BindingFailed}" />
我只能绑定到父母(contextMenu)。
谢谢
ContextMenu
无法使用ElementName
绑定到DataGrid
,但它无法绑定到父 ContextMenu
的 PlacementTarget
属性(这是Button
)。
因此,您可以将Button
的Tag
属性绑定到DataGrid
,然后从MenuItem
绑定到Tag
属性:
<Button Name="BTN_OpenContext" Content="CLICK TO OPEN"
Tag="{Binding ElementName=DG_Data}">
<Button.ContextMenu>
<ContextMenu Name="CM_ContextMenu">
<MenuItem Header="{Binding Path=PlacementTarget.Tag.Columns.Count,
RelativeSource={RelativeSource AncestorType=ContextMenu}, FallbackValue=BindingFailed}" />
</ContextMenu>
</Button.ContextMenu>
</Button>