2017-01-20 10 views
2

私はWPFとC#にはまったく新しいので、私が試みていることを達成するためのより良い方法があるかもしれません。したがって、私は他の方法に開放されています。DataTriggerの値が満たされていない場合のプロパティの設定WPF

私が持っている限り、私はデジタルVMB(Visual Management Board)を私が働くメンテナンス部門にプログラムしようとしています。彼らは、私たちの工場が事故なく何日も過ごした日数を表示するセクションを望んでいます。

<TextBlock Text="{Binding DaysSafe}" FontSize="60" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" > 

私はテキストの値に基づいて、特定の色にテキストの前景色を変更するDataTriggersのシリーズを持っている:私は正常にこのTextBlockのための結合セットを持っています。基本的に、私はDaysSafeテキストになりたい: レッド1などは(あなたは以下の私のコードの色を見ることができる)とき0 オレンジとき:

<StackPanel VerticalAlignment="Center" > 
      <TextBlock Text="{Binding DaysSafe}" FontSize="60" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" > 
       <TextBlock.Style> 
        <Style TargetType="{x:Type TextBlock}"> 
         <Style.Triggers > 
          <DataTrigger Binding="{Binding DaysSafe}" Value="0"> 
           <Setter Property="Foreground" Value="Red"/> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding DaysSafe}" Value="1"> 
           <Setter Property="Foreground" Value="OrangeRed" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding DaysSafe}" Value="2"> 
           <Setter Property="Foreground" Value="Orange" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding DaysSafe}" Value="3"> 
           <Setter Property="Foreground" Value="Yellow" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding DaysSafe}" Value="4"> 
           <Setter Property="Foreground" Value="Yellow" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding DaysSafe}" Value="5"> 
           <Setter Property="Foreground" Value="GreenYellow" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 
     </StackPanel> 

これは正しく機能し、色が変化したときに日低いです。しかし、私は前景の色が "Default"になっていて、DaysSafeの値が5を超えている場合は緑色にしたいと思います。今のところ、5以上の値は緑色にしたいときは黒です。最初のTextBlockセクションにforeground = "green"属性を追加しようとしましたが、これはDataTriggersをオーバーライドし、フォアグラウンドは常に緑です。

フォアグラウンドのデフォルト値をどのように作成するかに関するヘルプがありますか?おかげさまで

+0

だけのスタイル自体に<セッタープロパティ=「フォアグラウンド」値=「グリーン」/> ''追加します。 – icebat

答えて

4

あなただけのグリーンへのTextBlockのデフォルト前景色を設定し、セッターを追加することができます。

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="Green" /> 
    <Style.Triggers > 
     <DataTrigger Binding="{Binding DaysSafe}" Value="0"> 
      <Setter Property="Foreground" Value="Red"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding DaysSafe}" Value="1"> 
      <Setter Property="Foreground" Value="OrangeRed" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding DaysSafe}" Value="2"> 
      <Setter Property="Foreground" Value="Orange" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding DaysSafe}" Value="3"> 
      <Setter Property="Foreground" Value="Yellow" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding DaysSafe}" Value="4"> 
      <Setter Property="Foreground" Value="Yellow" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding DaysSafe}" Value="5"> 
      <Setter Property="Foreground" Value="GreenYellow" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+1

ありがとう!このような単純な修正は、私はそこにこれをカバーするものを見つけることができなかった。投票されましたが、私はノブなので15歳以上になるまで表示されません。良い一日を過ごしてください! –

関連する問題