编辑:更新,因为澄清指向“在此处输入文本”周围的白色矩形。
为此,您需要为该模板创建一个自定义模板,该模板在DatePickerTextBox
该模板下方约 2/3 处定义,并命名为 TextBox。您最好的选择是使用 Blend 创建一个自定义模板(因为它将生成默认模板),然后修改<Border x:Name="watermark_decorator".../>
以更改BorderBrush
. 例如:
<Style x:Key="MyDatePickerTextBoxStyle" TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DatePickerTextBox}">
<Grid>
<!-- Visual State Manager stuff -->
<Border...>
<!-- other stuff... -->
<Border x:Name="watermark_decorator" BorderBrush="[THE BRUSH YOU WANT]" BorderThickness="1">
<!-- And so on and so forth... -->
</Border>
</Border>
</Grid>
</ControlTemplate>
</Setter>
</Style>
然后,在DatePicker
模板中,修改 DatePickerTextBox 以使用此样式:
<!-- All DatePicker Template stuff -->
<controlsPrimitives:DatePickerTextBox x:Name="TextBox" Style="{DynamicResource MyDatePickerTextBoxStyle}" ... />
你说的是上面有 15 的按钮吗?如果是这样,这部分的外观DatePicker
在模板的“DropDownButtonTemplate”部分中定义。此模板包含一个很大的VisualStateManager
部分,但随后定义了该按钮的模板。有一些注释定义了按钮模板的开始和结束:
<!--Start UI-->
... this is the Button Template ...
<!-- End UI-->
例如,如果要更改按钮顶部的蓝色矩形的颜色,MSDN 示例使用此:
<Rectangle Grid.ColumnSpan="4" Grid.RowSpan="1" StrokeThickness="1">
<Rectangle.Stroke>
<LinearGradientBrush EndPoint="0.48,-1" StartPoint="0.48,1.25">
<GradientStop Color="#FF494949" />
<GradientStop Color="#FF9F9F9F" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.3,-1.1" StartPoint="0.46,1.6">
<GradientStop Color="#FF4084BD" />
<GradientStop Color="#FFAFCFEA" Offset="1" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
您只需将其更改为以下内容即可将其更改为纯色:
<Rectangle Grid.ColumnSpan="4" Grid.RowSpan="1" StrokeThickness="1" Stroke="Black" Fill="Green"/>
“白框”实际上是Border
带有 的模板内部x:Name="BackgroundGradient"
,因此如果更改该元素的背景,则可以摆脱白色。