如何将主题应用于从文本框继承的自定义控件



我创建了一个从文本框继承的 WPF 控件

我已将 Theme BureauBlue 添加到我的项目中,并将以下 XAML 添加到我的 Application.xaml

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

我希望将相同的主题应用于继承自的自定义控件文本框

我怎样才能实现这一点

阿米特·萨拉夫

编辑根据建议所做的更改

<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".
如果一个

样式目标Textbox将不适用于其自定义控件(继承自Textbox的控件。如果您知道BureauBlue's样式,请将其作为针对派生类名的新样式放在应用程序资源中,如果您不知道该样式,我可以建议一种解决方法。

创建针对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类中使用的属性。

在这里,针对Textbox Style将适用于您的custom control

最新更新