我创建了一个从文本框继承的 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