1

这是avalon 码头和单独窗口中的用户控制的后续问题- 我的窗口打开得很好,我认为这将是困难的部分;但我很难更改上下文菜单。

我是 WPF 和 avalondock 的新手,它可能很简单,但我很想念它。

上一个问题以http://avalondock.codeplex.com/SourceControl/changeset/view/96370#1749982为例。我收到“未找到 ContextMenuElement”错误,所以选择了更简单的方法:

http://avalondock.codeplex.com/discussions/246250 - 这是关于用法语文本替换但我可以适应它。我无法让它工作,然后尝试逐字复制粘贴,但仍然有同样的错误:

Cannot find the type ContextMenuElement. Note that type names are case sensitive

我在资源字典中得到这个,它指向菜单项的命令部分,例如:

   <MenuItem Header="Fermer"

                  Command="avalonDock:DocumentPaneCommands.CloseThis" />

我错过了什么?

编辑:资源字典摘录:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:avalonDock="clr-namespace:AvalonDock;assembly=AvalonDock">

<!--Menu contextuel des onglets de l'avalonDock-->
<ContextMenu x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type avalonDock:DockingManager}, ResourceId={x:Static avalonDock:ContextMenuElement.DocumentPane}}">
    <MenuItem Header="Fermer"
                  Command="avalonDock:DocumentPaneCommands.CloseThis" />
    <MenuItem Header="Fermer tout sauf cet élément"
                        Command="{Binding Path=DataContext.FermerCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>

    <Separator />
4

1 回答 1

2

您尝试调整的代码看起来像是 1.3 版的,您可能正在使用新的 2.0 版。您更改 DockingManager 行为的方式发生了很大变化,现在比以往任何时候都更简单。

这是一个小示例,用于替换 DocumentPane 中文档的 ContextMenu(在 v2.0.1320 上测试):

<ad:DockingManager>
    <ad:DockingManager.DocumentContextMenu>
        <ContextMenu>
            <MenuItem Header="DEMO"/>
        </ContextMenu>
    </ad:DockingManager.DocumentContextMenu>
</ad:DockingManager>

在主题中,您可以看到这是如何使用样式完成的

<Style x:Key="{x:Type avalonDock:DockingManager}" TargetType="{x:Type avalonDock:DockingManager}">
    <Setter Property="DocumentContextMenu" Value="{StaticResource AvalonDock_ThemeVS2010_DocumentContextMenu}"/>
...

我仍然建议从他们的网站复制主题项目并为您的应用程序构建自己的主题。这样,您就可以将所有改编内容整齐地存储在可重用的 dll 中。

于 2012-10-17T09:10:52.097 回答