更改WPF DatePicker文本框的外观

时间:2017-02-24 11:40:12

标签: c# wpf datepicker controltemplate

更改WPF DatePicker的Foreground属性确实会更改文本框中文本的颜色,但不会更改Background属性。但您可以通过样式化包含的DatePickerTextBox来更改它。所以我最终得到了这个:

<DatePicker Foreground="Yellow" >
    <DatePicker.Resources>
        <Style TargetType="{x:Type DatePickerTextBox}" >
            <Setter Property="Background" Value="Black" />
        </Style>
    </DatePicker.Resources>
</DatePicker>

在没有模仿整个控制的情况下,是否有更简洁的方法? 有没有办法模拟命名部分,即PART_TextBox?

3 个答案:

答案 0 :(得分:2)

您可以更改DatePickerTextBox样式

代码

<DatePicker>
    <DatePicker.Resources>
        <Style TargetType="{x:Type DatePickerTextBox}">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <TextBox x:Name="PART_TextBox" 
                                    Text="{Binding Path=SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.Resources>
</DatePicker>

请参阅此链接Custom WPF DatePickerTextBox Template Help

答案 1 :(得分:0)

  

在没有模仿整个控制的情况下,是否有更简洁的方法?有没有办法模拟命名部分,即PART_TextBox?

没有。您无法设置在控件模板中定义的元素的任何属性(并且不会绑定到&#34; parent&#34;控件本身)的任何属性,而无需重新定义整个模板或使用隐式样式。

答案 2 :(得分:0)

这也是组合框的问题。您可以添加触发器来修复此问题,如图所示。

#cookbook bump forcing:
cookbook 'build-essential', '~>8.0'
cookbook 'ohai', '~>5.2'