Не удается установить пользовательское контекстное меню для таблицы в richtextbox

#c# #wpf #contextmenu #richtextbox

#c# #wpf #контекстное меню #richtextbox

Вопрос:

 <Window.Resources>
  <ContextMenu x:Key="TableContextMenu">
   <MenuItem Command="Copy" />
   <MenuItem Header="asdasdsad" />
  </ContextMenu>
  <Style TargetType="{x:Type Table}">
   <Setter Property="ContextMenu" Value="{StaticResource TableContextMenu}" />
  </Style>
 </Window.Resources>
  

У кого-нибудь есть идея?

Ответ №1:

Понял, вам нужно вручную открыть контекстное меню..

 <Style TargetType="{x:Type TableCell}">
        <EventSetter Event="ContextMenuOpening" Handler="Table_ContextMenuOpening" />
        <Setter Property="ContextMenu" Value="{StaticResource TableContextMenu}" />
    </Style>
  

В обработчике открытия contextmenu вы должны установить для обрабатываемого параметра значение true и открыть contextmenu

 lastTableCell.ContextMenu.IsOpen = true;
  

Если ваши команды в контекстном меню выделены серым цветом: afaik, это ошибка, и вам нужно поместить привязки ваших команд непосредственно в контекстное меню в XAML

 <ContextMenu x:Key="TableContextMenu">
        <ContextMenu.CommandBindings>
            <CommandBinding Command="{x:Static main:MainWindow.AddRowAboveCommand}"
                    CanExecute="CanExecuteAlways"
                    Executed="AddRowAbove_Executed" />
        </ContextMenu.CommandBindings>
  

Приветствия

Комментарии:

1. Получил этот ответ на форумах msdn .. не знаю, работает ли это в richtextbox. IsDocumentEnabled=»true»