在WPF中覆盖主题
在WPF中覆盖主题
我正在处理一个WPF项目时遇到一个小问题。我对WPF还不熟悉。在我的app.xaml中,我正在为应用程序使用Microsoft Aero主题。在我的app.xaml中有以下内容:
现在我想知道如何覆盖特定的样式属性,例如对于按钮,我想覆盖字体样式,同时保留其余的Aero风格。
如果我在窗口资源中定义一个按钮样式,例如:
并且基于上述样式定义一个按钮,
则按钮将失去所有Aero样式属性。我认为问题出在我为样式定义的BasedOn属性上
BasedOn="{StaticResource {x:Type Button}}"
我认为资源不是静态的,因为它来自一个dll,它应该是这样的。不过不确定。
BasedOn="{DynamicResource {x:Type Button}}"
但是上述代码会抛出异常,如果我的app.xaml中有多个资源字典,例如luna和classic。我如何指定使用哪一个作为默认值,并同时使用和覆盖另一个(例如luna)来特定地对我的界面中的某些控件进行设置?因此,我的一些按钮将基于luna样式,而另一些按钮将基于aero样式,并进行一些进一步的修改?
有什么想法吗?
谢谢,
问题的出现原因是,用户想要在WPF中重写按钮的字体样式,同时保留其他的Aero样式。
解决方法是在资源字典中添加以下内容:
Tahoma
然后在样式中使用该字体样式:
这样可以根据一个单一的键更改字体样式。
建议查看此链接中的示例代码:http://wpfthemes.codeplex.com/SourceControl/latest#WPF.Themes.Demo/Window1.xaml