将ContextMenuItem属性绑定到DataGrid或其他Element属性

时间:2019-03-14 11:56:44

标签: c# wpf binding

我试图将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)。

谢谢

1 个答案:

答案 0 :(得分:1)

ContextMenu不能使用DataGrid绑定到ElementName,但是不能绑定到父ContextMenu的{​​{1} }(即PlacementTarget)。

因此您可以将Button的{​​{1}}属性绑定到Button,然后从Tag绑定到DataGrid属性:

Tag