嵌套 RibbonApplicationMenuItem 时出错

2024-04-20

我想建立一个RibbonApplicationMenu。其中应嵌套一个RibbonApplicationMenuItem or RibbonApplicationSplitMenuItem,例如喜欢这个:

<ribbon:RibbonApplicationSplitMenuItem x:Name="item1" Header="open project" ImageSource="../img/img1.png">
       <ribbon:RibbonApplicationMenuItem x:Name="item11" Header="sub1" ImageSource="../img/img2.png" />
       <ribbon:RibbonApplicationMenuItem x:Name="item12" Header="sub2" ImageSource="../img/img3.png" />
       <ribbon:RibbonApplicationMenuItem x:Name="item13" Header="sub3" ImageSource="../img/img3.png" />
</ribbon:RibbonApplicationSplitMenuItem>

起初没有显示任何错误,程序可以成功构建。

当我继续工作时,整个部分都会被标记并给出错误:

索引“0”超出 PathParameters-List 的有效范围 长度为“0”

出现这个错误的原因是什么?


这很容易理解和修复,但实际上没有必要这样做。

原因

问题是在标准功能区模板中存在许多错误的占位符

<Condition Binding="{Binding  (0)}" Value="True"/>

The Fix

长话短说,您需要将上面的内容更改为,例如:

<Condition Binding="{Binding  Zero }" Value="True"/>

怎么做?

这不是微不足道的,但你只要稍微注意一下就可以做到。

您必须添加对PresentationFramework.Classic

然后,让我从最后开始......目标是定义以下内容

<Window.Resources>
    <Style TargetType="{x:Type RibbonButton}" >
        <Setter Property="Template" Value="{DynamicResource RibbonButtonControlTemplate1}"/>
    </Style>

    <Style TargetType="{x:Type RibbonApplicationSplitMenuItem}" >
        <Setter Property="Template" Value="{DynamicResource RibbonApplicationSplitMenuItemControlTemplate1}"/>
    </Style>


    <Style TargetType="{x:Type RibbonApplicationMenuItem}" >
        <Setter Property="Template" Value="{DynamicResource RibbonApplicationMenuItemControlTemplate1}"/>
    </Style>

</Window.Resources>

缺少的控制模板

还缺少什么?包含上述内容的三段非常大的代码ControlTemplates...但是有一个技巧可以将它们包括在内:

  • 将光标移至(例如)RibbonApplicationMenuItem并找到Template in the Properties Window

  • 点击右侧Ambient并选择Convert to New Resource...

    总之,您将运行整体替换(0) to Zero通过你所有的xaml。

再次强调,这是一项纯粹的学术活动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套 RibbonApplicationMenuItem 时出错 的相关文章

随机推荐