2017-02-24 100 views
1

更改WPF的Foreground屬性DatePicker確實會更改文本框中文本的顏色,但更改Background屬性不會。但是,您可以通過對包含的DatePickerTextBox進行樣式化來更改它。所以我結束了這一點:更改WPF DatePicker文本框的外觀

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

是否有這樣做沒有模板化的整體控制的一個整潔的方式嗎? 有沒有辦法模擬指定的部分,即PART_TextBox?

回答

0

有沒有模板化整個控制這樣做的一個更整潔的方式?有沒有辦法模擬指定的部分,即PART_TextBox?

號不能無需重新定義整個模板或集合(控制本身和未綁定到「父」的任何屬性),其被控制的模板中所定義的元素的任何性質使用隱式樣式。

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

0

這也與組合框的問題。如圖所示,您可以添加一個觸發器來解決此問題。

<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>