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/