如何向WPF DataGridCell ContextMenu添加处理程序

问题描述 投票:0回答:1

我有这个XAML:

            <DataGridTextColumn Binding="{Binding Vessel}" Header="Vessel" IsReadOnly="True">
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="ContextMenu">
                            <Setter.Value>
                                <ContextMenu>
                                    <MenuItem x:Name="mVesselSize" Header="Size"/>
                                </ContextMenu>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

当我尝试将Click处理程序添加到菜单时,我得到:

'mVesselSize_Click'无效。 'Click'不是'System.Windows.Controls.DataGridTextColumn'上的事件。

我究竟做错了什么?我认为它可能与DataGridTextColumn.CellStyle中的菜单有关(我从堆栈溢出的其他地方复制了该代码)但我不知道如何为特定数据网格单元(列)创建上下文菜单。

wpf datagrid contextmenu
1个回答
0
投票

似乎无法在ContextMenu的样式设置器中设置事件处理程序

这是一种遵循你的想法的hacky方式

<MenuItem x:Name="mVesselSize" Header="Size">
    <MenuItem.Style>
        <Style TargetType="MenuItem">
           <EventSetter Event="Click" Handler="mVesselSize_Click"/>
        </Style>
    </MenuItem.Style>
 </MenuItem>

但肯定会有更好的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.