将ContextMeNuitem属性绑定到datagrid或其他元素属性



我试图将上下文属性绑定到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,但它无法绑定到父 ContextMenuPlacementTarget属性(这是Button)。

因此,您可以将ButtonTag属性绑定到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>

最新更新