Как добавить обработчик в контекстное меню WPF DataGridCell - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть этот 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' недопустимо.«Клик» не является событием в «System.Windows.Controls.DataGridTextColumn».

Что я делаю не так?Я думаю, что это может быть связано с тем, что меню находится внутри DataGridTextColumn.CellStyle (я скопировал этот код откуда-то еще при переполнении стека), но я не знаю, как еще сделать контекстное меню для конкретной ячейки сетки данных (столбец),

1 Ответ

0 голосов
/ 19 сентября 2018

Кажется, невозможно установить обработчик событий в установщике стилей для ContextMenu

Это хакерский способ следовать вашим мыслям

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

Но, безусловно, найдутся лучшие решения

...