如何将主题应用到从Textbox继承的Custome控件上?

问题描述 投票:0回答:1

我已经创建了一个继承自文本框的WPF控件。

我已经添加了主题 蓝色局 在我的项目中添加以下XAML到我的Application.xaml中。

<Application.Resources>
    <ResourceDictionary Source="Themes/BureauBlue.xaml"/>
</Application.Resources>

我想把同样的主题应用到我的自定义控件上,该控件从TextBox继承。

如何才能做到这一点

Amit Saraf

根据建议进行编辑修改

<Application.Resources>
    <ResourceDictionary Source="Themes/BureauBlue.xaml"/>

    <Style TargetType="WPFControls:MyTextBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <TextBox Text="{TemplateBinding Text}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

错误

The property "Resources" can only be set once.
The specified value cannot be assigned. The following type was expected: "ResourceDictionary".
wpf styles controls
1个回答
0
投票

如果一个风格的目标是 Textbox 将不适用于其自定义控件( 控件继承于 Textbox. 如果你知道 BureauBlue's 风格,将其作为一个新的风格放置在你的App资源中,这个新的风格是以你的派生类名为目标的,如果你不知道这个风格,我可以建议一个变通的办法。

创建一个新的样式,目标是你的 custom control 并定义一个 Template 其中

 <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/BureauBlue.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="WPFControls:MyTextBox">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TextBox">
                        <TextBox Text="{TemplateBinding Text}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>

注意:模板绑定的属性,你往往会在你的应用程序中使用。custom control 类。

这里的 Style 其目标是 Textbox 将适用于您的 custom control

© www.soinside.com 2019 - 2024. All rights reserved.