2017-10-24 2 views
0

Ich habe ein TextBock, wo ich den Stil basierend auf einem DataTrigger ändern, die über eine gebundene boolesche Eigenschaft ausgelöst wird. Was ich will, ist die ForeGround Farbe meines Textes zu ändern, wenn der Wert der gebundenen Eigenschaft wahr ist. Wenn es falsch ist, möchte ich meinen "Standard" -Stil (BodyValueStyle1) erneut verwenden. wie ich es tun so weit ist:Wie "Standard" Stil von WPF-Steuerelement über DataTrigger festlegen

<TextBlock.Style> 
    <Style BasedOn="{StaticResource BodyValueStyle1}" TargetType="{x:Type TextBlock}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsTrueOrFalse}" Value="True"> 
       <Setter Property="TextBlock.Foreground" Value="Red"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding IsTrueOrFalse}" Value="False"> 
       <Setter Property="TextBlock.Foreground" Value="Black"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBlock.Style> 

Es funktioniert gut, und tut, was ich will, aber was Ich mag nicht, ist die folgende:

<DataTrigger Binding="{Binding IsTrueOrFalse}" Value="False"> 
    <Setter Property="TextBlock.Foreground" Value="Black"/> 
</DataTrigger> 

Gibt es eine Möglichkeit das zu „Reset“ Stil zu meinem Standardstil (BodyValueStyle1), anstatt alle Eigenschaften einzustellen, die ich vorher bei falscher Bedingung geändert habe? Weil meine Standard-ForeGround-Farbe sowieso schwarz ist.

Antwort

3

Wenn Sie ein Setter in BodyValueStyle1:

<Setter Property="Foreground" Value="Black" /> 

Dann können Sie die zweite DataTrigger entfernen. Das Verhalten der Auslöser ist bereits das, was Sie möchten.

Quellen

Another Stack Overflow question with explanation

Die Eigenschaften von Triggern geändert werden automatisch auf ihren vorherigen Wert zurückgesetzt, wenn die getriggerte Bedingung nicht mehr erfüllt ist. Trigger sind für Übergangszustände optimiert, bei denen erwartet wird, dass sie sich ändern und in den ursprünglichen Zustand zurückkehren, z. B. IsPressed on Button und IsSelected auf ListBoxItem. Die Eigenschaft von Interesse muss eine Abhängigkeitseigenschaft sein.

Verwandte Themen