如何解决当控件的类型具有全局样式时,如何仅在WPF中为我的应用程序的一部分更改控件的样式?
| 我在App.xaml中设置了Menu / ContextMenu / MenuItem控件的样式,以便这些样式适用于我的所有应用程序。 定义如下(例如,使用MenuItem):<Style targettype=\"{x:Type MenuItem}\">
<Setter Property=\"SnapsToDevicePixels\" Value=\"true\"/>
<Setter Property=\"OverridesDefaultStyle\" Value=\"True\"/>
<!-- more setters -->
</Style>
这很好。
现在,在某个时候我有一个RichTextBox,我希望它的ContextMenu和MenuItems具有不同的样式。
所以我写道:
<RichTextBox>
<RichTextBox.ContextMenu>
<ContextMenu>
<MenuItem Command=\"Undo\" Style=\"{StaticResource menuItem}\">Toto</MenuItem>
<MenuItem Command=\"Redo\"/>
<Separator/>
<MenuItem Command=\"Cut\"/>
<MenuItem Command=\"copy\"/>
<MenuItem Command=\"Paste\"/>
<MenuItem Command=\"SelectAll\"/>
</ContextMenu>
</RichTextBox.ContextMenu>
<!-- and here the RichTextBox\'s conent -->
</RichTextBox>
现在我正在尝试找出可以放置新样式的位置...问题是:我无法找出它:无论在何处以及如何添加它(RichTextBox或ContextMenu(带有显式Key或targettype),我无法摆脱\“ Global \”样式。而本地的只是被忽略了。
我该如何进行?
解决方法
尝试:
<RichTextBox.Resources>
<Style x:Key=\"menuItem\" TargetType=\"{x:Type MenuItem}\">
<Setter Property=\"Foreground\" Value=\"Blue\"/>
</Style>
</RichTextBox.Resources>
, 最后,我选择了ContextMenu的资源,这甚至为我节省了每个menuItem中的“ Style = ... \”。
<RichTextBox.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<Style TargetType=\"{x:Type MenuItem}\">
<Setter Property=\"SnapsToDevicePixels\" Value=\"true\"/>
<Setter Property=\"OverridesDefaultStyle\" Value=\"True\"/>
<Setter Property=\"Background\" Value=\"{StaticResource MenuItemBackgroundBrush}\"/>
</Style>
</ContextMenu.Resources>
</ContextMenu>
</RichTextBox.ContextMenu>
我想我从一开始就拥有它,但是以某种方式忘记了OverridesDefaultStyle = true,这似乎是问题所在。 (尽管从我对MS文档的了解来看,它对我的情况没有任何影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。