C# 在WPF中对整个应用程序进行蒙皮的推荐方法是什么?
我希望通过应用某个XAML模板,我的WPF应用程序是可蒙皮的,并且更改是应用程序范围的,即使对于动态控件或甚至不在可视化/逻辑树中的控件也是如此C# 在WPF中对整个应用程序进行蒙皮的推荐方法是什么?,c#,.net,wpf,templates,skinning,C#,.net,Wpf,Templates,Skinning,我希望通过应用某个XAML模板,我的WPF应用程序是可蒙皮的,并且更改是应用程序范围的,即使对于动态控件或甚至不在可视化/逻辑树中的控件也是如此 我可以使用什么来实现这种类型的功能?有什么好的资源或教程可以展示如何完成这项特定任务吗?基本方法是在应用程序中使用所有资源,并在运行时动态替换资源 有关基本方法,请参见替换资源将起作用,但我发现“结构蒙皮”功能更强大!在CodeProject上阅读更多关于它的信息 我找到了一种方法,可以在不使用模板键的情况下将通用模板应用于所有控件。解决方案是使用控件
我可以使用什么来实现这种类型的功能?有什么好的资源或教程可以展示如何完成这项特定任务吗?基本方法是在应用程序中使用所有资源,并在运行时动态替换资源
有关基本方法,请参见替换资源将起作用,但我发现“结构蒙皮”功能更强大!在CodeProject上阅读更多关于它的信息
我找到了一种方法,可以在不使用模板键的情况下将通用模板应用于所有控件。解决方案是使用控件的类型作为样式键 例如:
<Application.Resources>
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
<Setter Property="Button.Background" Value="CornflowerBlue"/>
<Setter Property="Button.Template">
<Setter.Value>
<ControlTemplate x:Name="MyTemplate">
...
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
...
这里的样式键是x:key=“{x:Type Button}”,因此样式将应用于Button类型的所有控件,而控件不将样式属性声明为静态或动态资源 如果根本不指定x:Key,则TargetType将自动用作Key。干的(我也喜欢矢车菊蓝!)此外,有些零碎的东西内置了钥匙,你只需要知道就可以了。例如,菜单中的分隔符。这是一个古老的问题和答案,但除非我弄错了,否则该页面中提到的方法似乎也依赖于(至少部分)动态资源引用。有没有可能找到替代者?@Matt