wpf - 将菜单项添加到 FlowDocumentReader ContextMenu

标签 wpf contextmenu flowdocumentreader

FlowDocumentReader 在其 ContextMenu 中有两个菜单项,即复制和全选。我想向它添加一个额外的 MenuItem 并尝试过:

    private void FlowDocumentReader_ContextMenuOpening(object sender, ContextMenuEventArgs e)
    {
        flowDocumentReader.ContextMenu.Items.Clear();
        MenuItem menuItem = new MenuItem();
        menuItem.Header = "Test";
        flowDocumentReader.ContextMenu.Items.Add(menuItem);
    }

另外我试过这个:
    private void FlowDocumentReader_ContextMenuOpening(object sender, ContextMenuEventArgs e)
    {
        MenuItem menuItem = new MenuItem();
        menuItem.Header = "Test";
        flowDocumentReader.ContextMenu.Items.Add(menuItem);
    }

我没有清除上下文菜单中的项目并尝试附加它。这些都不起作用。

我可以像这样创建自己的菜单:
    private void FlowDocumentReader_ContextMenuOpening(object sender, ContextMenuEventArgs e)
    {
        MenuItem menuItem = new MenuItem();
        menuItem.Header = "Test";
        flowDocumentReader.ContextMenu.Items.Add(menuItem);
        e.Handled = true;
        ContextMenu menu = new ContextMenu();
        MenuItem a = new MenuItem();
        a.Header = "A";
        menu.Items.Add(a);
        MenuItem b = new MenuItem();
        b.Header = "B";
        menu.Items.Add(b);
        flowDocumentReader.ContextMenu.Items.Clear();
        flowDocumentReader.ContextMenu = menu;
        menu.IsOpen = true;
    }

这会显示出来,但我想要的是复制并全选菜单项以及 A 和 B。

想法?

最佳答案

您也可以在 的 xaml 中执行此操作流程文档 :

<FlowDocument.ContextMenu>
     <ContextMenu>
          <MenuItem Header="{Resx Copy}" Command="Copy"/>
          <MenuItem Header="{Resx SelectAll}" Command="SelectAll"/>
          <MenuItem Header="{Resx CustomCommand}" Command="{Binding CustomCommand}"/>
     </ContextMenu>
</FlowDocument.ContextMenu>

(由于 Grant Frisken 的 Resx Extension,标题方便地本地化):)

如果这需要应用于许多 FlowDocuments,您还可以在某处以默认样式定义它:
<Style TargetType="FlowDocument">
    <Setter Property="ContextMenu">
         <Setter.Value>
              <ContextMenu>
                  <MenuItem Header="{Resx Copy}" Command="Copy"/>
                  <MenuItem Header="{Resx SelectAll}" Command="SelectAll"/>
                  <MenuItem Header="{Resx CustomCommand}" Command="{Binding CustomCommand}"/>
              </ContextMenu>
         </Setter.Value>
    </Setter>
</Style>

关于wpf - 将菜单项添加到 FlowDocumentReader ContextMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4965458/

相关文章:

c# - 从 ContentControl 中的按钮触发命令?

c++ - 将应用程序的选项添加到 Windows 资源管理器上下文菜单

android - 隐藏 Android 上下文菜单项

wpf - 为什么我不能粘贴从 WPF FlowDocumentScrollViewer 或 Reader 复制的文本?

coding-style - 在 FlowDocumentReader 中隐藏控件

wpf - XAML 主题 Visual Studio 2012

wpf - 如何在 Prism-Unity-WPF 应用程序中正确处理 ContainerControlledLifetimeManager 创建的依赖项

c# - set的封装更有效

c# - 扩展 Windows 资源管理器上下文菜单

wpf - 如何通过WPF中的代码转到flowdocument阅读器中的特定页码?