2017-02-24 37 views
1

WPF DatePickerのForegroundプロパティを変更すると、テキストボックス内のテキストの色は変更されますが、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>

関連する問題