在WPF中覆盖主题

17 浏览
0 Comments

在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样式,并进行一些进一步的修改?

有什么想法吗?

谢谢,

0
0 Comments

问题的出现原因是,用户想要在WPF中重写按钮的字体样式,同时保留其他的Aero样式。

解决方法是在资源字典中添加以下内容:

Tahoma

然后在样式中使用该字体样式:


这样可以根据一个单一的键更改字体样式。

建议查看此链接中的示例代码:http://wpfthemes.codeplex.com/SourceControl/latest#WPF.Themes.Demo/Window1.xaml

0