如何替换WPF控件的默认样式?

时间:2010-02-10 13:02:02

标签: wpf styles

因此,当我在我的应用程序中应用其他类型的样式时,我不必执行BasedOn事情,以便将它们与我的自定义全局样式合并。你知道,就像微软自己的风格一样。基本上,我想在number 9而不是8。

应用我的风格

如果这是相关的:我还想完全忽略主题和其他任何可能使我的应用程序在不同机器上显示不同的内容。

编辑:我想对我没有制作的控件执行此操作,例如Button。

2 个答案:

答案 0 :(得分:3)

听起来你想要做的是为控件创建一个不同的Generic.xaml(主题)样式,但这不是用于内置控件的东西。您可以执行诸如使用样式创建备用主题程序集之类的操作,您可以将WPF愚弄到加载(即PresentationFramework.Aero.dll)或子类化要替换模板的控件。在走这条路之前,你应该真正评估是否值得投入时间。你可能能够开始工作的任何事情都会增加复杂性并且需要做很多额外的工作来改变你的本地默认样式声明

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">

<Style TargetType="{x:Type Button}">

就忽略主题而言,就自动选择过程而言,你无法控制。执行此操作的标准方法是将特定主题的默认样式复制到App.xaml中作为应用程序默认样式并根据需要进行修改,但这显然会产生您试图摆脱的情况。

答案 1 :(得分:0)

如果在自定义样式中将OverridesDefaultStyle属性设置为true,则将忽略主题样式(或默认样式)。这有效地使你的风格成为唯一使用的风格。

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.overridesdefaultstyle.aspx