更改 WPF DatePicker 文本框的外观

Sim*_*lis 5 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>
Run Code Online (Sandbox Code Playgroud)

有没有更整洁的方法来做到这一点而不对整个控件进行模板化?有没有办法只对命名部分进行模板化,即 PART_TextBox?

Rag*_*van 6

您可以更改 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>
Run Code Online (Sandbox Code Playgroud)

请参阅此链接自定义 WPF DatePickerTextBox 模板帮助


mm8*_*mm8 1

有没有一种更简洁的方法可以在不模板化整个控件的情况下执行此操作?有没有办法只模板化命名部分,即 PART_TextBox?

不可以。如果不重新定义整个模板或使用隐式样式,则无法设置在控件模板内定义的元素的任何属性(并且未绑定到“父”控件本身的任何属性)。