【问题标题】:Change appearance of WPF DatePicker's textbox更改 WPF DatePicker 文本框的外观
【发布时间】:2017-07-15 05:34:01
【问题描述】:

更改 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?

【问题讨论】:

    标签: c# wpf datepicker controltemplate


    【解决方案1】:

    你可以改变 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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        <Style TargetType="{x:Type TextBlock}" x:Key="TextBlockStyle">
            <Setter Property="Foreground" Value="WhiteSmoke"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsEnabled, 
                    RelativeSource={RelativeSource AncestorType=ComboBox}}" Value="True">
                    <Setter Property="Foreground" Value="Black"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsEnabled, 
                    RelativeSource={RelativeSource AncestorType=DatePicker}}" Value="True">
                    <Setter Property="Foreground" Value="Black"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
        

        【讨论】:

          猜你喜欢
          • 2021-08-30
          • 2011-02-07
          • 2013-07-07
          • 1970-01-01
          • 2011-10-08
          • 2010-10-27
          • 2023-03-23
          • 2013-01-31
          • 1970-01-01
          相关资源
          最近更新 更多