将菜单项添加到FlowDocumentReader ContextMenu

its*_*att 4 wpf contextmenu flowdocumentreader

FlowDocumentReader在其ContextMenu,Copy和Select All中有两个菜单项.我想为它添加一个额外的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);
    }
Run Code Online (Sandbox Code Playgroud)

另外我试过这个:

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

我不清除上下文菜单中的项目并尝试附加它.这些都不奏效.

我可以像这样创建自己的菜单:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

这将显示,但我想要的是复制和选择所有菜单项以及A和B.

想法?

tvt*_*173 6

您也可以在xaml中为FlowDocument执行此操作:

<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>
Run Code Online (Sandbox Code Playgroud)

(由于Grant Frisken的Resx 扩展,标题可以很方便地定位):)

如果需要将其应用于许多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>
Run Code Online (Sandbox Code Playgroud)