正如您所注意到的,在处理自定义控件时,您通常需要做一些自定义样式来重新配置布局。这完全取决于你想走多远,但为了给你一个想法,我相信下面的工作流程应该修复背景色。
backgroundcolor 绑定到 Xceed 的资源主题,来自Wpf Toolkit的片段:
<Style x:Key="NumericUpDown" TargetType="{x:Type prim:InputBase}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
<Setter Property="Background" Value="{DynamicResource {x:Static themes:ResourceKeys.ControlNormalBackgroundKey}}" />
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static themes:ResourceKeys.ControlNormalBorderKey}}" />
</Style>
这些属性的 ModernUI 样式(遵循所选主题)如下所示 ModernUI TextBox:
<Style TargetType="{x:Type TextBoxBase}">
<Setter Property="Foreground" Value="{DynamicResource InputText}"/>
<Setter Property="Background" Value="{DynamicResource InputBackground}"/>
<Setter Property="BorderBrush" Value="{DynamicResource InputBorder}"/>
</Style>
DynamicResources 位于主题文件中,例如ModernUI.Dark.xaml
<SolidColorBrush x:Key="InputText" Color="#d1d1d1" />
<SolidColorBrush x:Key="InputBackground" Color="#333333" />
<SolidColorBrush x:Key="InputBackgroundHover" Color="#3e3e42" />
<SolidColorBrush x:Key="InputBorder" Color="#333333" />
您现在可以在样式中硬编码它们,使它们固定在 1 个主题上
<Style TargetType="{x:Type local:IntegerUpDown}">
<Setter Property="Foreground" Value="#d1d1d1" />
<Setter Property="Background" Value="#333333" />
<Setter Property="BorderBrush" Value="#333333" />
</Style>
对于广泛的样式,您需要投入更多的工作,例如这篇文章解决
了重新设置 Watermark 属性的样式。