我希望我的WPF应用程序可以通过应用某个XAML模板进行换肤,并且更改应用于应用程序,即使对于甚至不在视觉/逻辑树中的动态控件或控件也是如此。
我可以用什么来完成这种功能?是否有任何好的资源或教程可以显示如何完成这项特定任务?
答案 0 :(得分:10)
要采取的基本方法是在整个应用程序中使用资源,并在运行时动态替换资源。
答案 1 :(得分:4)
资源的替换将起作用,但我发现“结构蒙皮”更强大!在CodeProject上阅读更多相关信息......
答案 2 :(得分:2)
我找到了在不使用模板键的情况下将通用模板应用于所有控件的方法。解决方案是使用控件的类型作为Style键。
示例:
<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}”,因此样式将应用于类型按钮的所有控件,而控件不会将Style属性声明为静态或动态资源。