作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!