我希望我的WPF应用程序可以通过应用某个XAML模板进行换肤,并且更改应用于应用程序,即使对于甚至不在视觉/逻辑树中的动态控件或控件也是如此。

我可以用什么来完成这种功能?是否有任何好的资源或教程可以显示如何完成这项特定任务?

有帮助吗?

解决方案

要采取的基本方法是在整个应用程序中使用资源,并在运行时动态替换资源。

参见 http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ 对于基本方法

其他提示

资源的替换将起作用,但我发现了“结构蒙皮”。更强大!在CodeProject上阅读更多相关信息......

http://www.codeproject.com/KB/WPF/podder1.aspx

我找到了在不使用模板键的情况下将通用模板应用于所有控件的方法。解决方案是使用控件的类型作为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 =&quot; {x:Type Button}&quot;,因此样式将应用于类型按钮的所有控件,而控件将Style属性声明为静态或动态资源。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top