我在
WPF ModernUI应用程序中使用Extended WPF Toolkit中的DecimalUpDown控件:
<xctk:DecimalUpDown Value="{Binding myProperty}" Increment="1" Maximum="10" Minimum="0" />
让我感到困惑的是:如果选择了强调颜色,例如红色,那么标准的ModernUI-Controls(如文本框)可以很好地适应这种颜色:
然而,DecimalUpDown控件坚持其风格.例如,控件在激活时为蓝色,控件中使用的RepeatButtons看起来不像ModernUI按钮:
更糟糕的是:View中放置DecimalUpDown控件的所有TextBox现在都显示这种样式,并以蓝色而不是红色突出显示:
我怎么能改变呢?
编辑:当我遵循Ben的好建议时,这是生成的ControlTemplate:
<ControlTemplate x:Key="ControlControlTemplate1" TargetType="{x:Type Control}">
<xctk:ButtonSpinner x:Name="PART_Spinner" AllowSpin="{Binding AllowSpin, RelativeSource={RelativeSource TemplatedParent}}"
...>
<xctk:WatermarkTextBox x:Name="PART_TextBox" AutoMoveFocus="{Binding AutoMoveFocus, RelativeSource={RelativeSource TemplatedParent}}"
AutoSelectBehavior="{Binding AutoSelectBehavior, RelativeSource={RelativeSource TemplatedParent}}"
AcceptsReturn="False"
.../>
</xctk:ButtonSpinner>
<ControlTemplate.Triggers>
...
</ControlTemplate.Triggers>
</ControlTemplate>
然后可以设置WatermarkTextBox和ButtonSpinner的样式:
到目前为止我没有管理过:有没有办法访问ButtonSpinner中的RepeatButtons,以便我也可以设置他们的样式?
最佳答案 可能需要编写自己的模板并在那里定义颜色.有时没有直接的方法来更改属性,这些属性是UI元素的一部分.
尝试编辑模板的副本并搜索蓝色值.
右键单击DecimalUpDown并转到编辑模板
如果没有设置颜色值,可以通过System.Colors设置它(例如ActiveBorderBrush)
<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderBrush}" Color="Orange" />
当控件处于活动状态,突出显示等时,System.Colors定义了一些标准行为.MSDN列出了所有现有控件:
https://msdn.microsoft.com/en-us/library/system.windows.systemcolors%28v=vs.110%29.aspx