gpt4 book ai didi

MVVM 中动态创建 MenuItem-Separator 的 WPF 光学样式

转载 作者:行者123 更新时间:2023-12-02 18:59:06 24 4
gpt4 key购买 nike

我有一个 MenuItem,它从 ItemsSource 属性动态创建其子菜单项。

对于分组,我在菜单中有分隔符。分隔符是由 MenuItem.ItemContainerStyle 的 ControlTemplate 为 ItemsSource 集合中的每个空条目创建的。

这工作正常,但是分隔符的光学样式与放置在菜单的项目集合中的其他分隔符不同。

有没有办法改变分隔符的外观,使其看起来与“正常”菜单项分隔符相同?

这是我使用的代码:

<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Title}"/>
<Setter Property="Command" Value="{Binding Command}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="{x:Null}">
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate>
<Separator /> <!-- THIS SEPARATOR IS NOT SHOWN AS COMMON MENUITEM-SEPARATORS ARE -->
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.ItemContainerStyle>

最佳答案

有一个样式在 System.Resources 中声明为 MenuItem.SeparatorStyleKey作为 key 。父 MenuItem 通常会为 Separator 类型的子项设置样式,但由于您的是 MenuItem,因此不会,因此您必须手动执行此操作:

<Separator Style="{StaticResource {x:Static MenuItem.SeparatorStyleKey}}" />

您可能还想阅读 Bea Stollnitz 的博客文章 "How do I insert Separator objects in a data bound MenuItem?"另一种方法。

关于MVVM 中动态创建 MenuItem-Separator 的 WPF 光学样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com