2010-11-24 24 views
0

Ich arbeite mit Wpf. Ich benutze TabControl, in einigen spezifischen Bedingungen TabItems Header enthält '*' Symbol. Ich muss einen Trigger schreiben, so dass, wenn es einen solchen Inhalt in der Kopfzeile gibt, TabItems Hintergrund ändert. Ich bin nicht in der Lage, einen Weg zu finden, dies in Xaml zu tun. Jede Hilfe plz.Wie schreibe ich diesen Trigger?

Antwort

2

Wenn ich Ihre Frage richtig verstanden habe, ich glaube, Sie das gleiche grundlegende Problem, wie die Person sind, die, die diese Frage gestellt: WPF Trigger when property value is greater than a certain amount die leider nur Links zu anderen Forumsbeitrag: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8ad8c14-95aa-4ed4-b806-d0ae874a8d26/ aber ich werde es hier zusammenfassen:

Wenn Sie einen DataTrigger anstelle eines regulären Triggers verwenden und an den Headertext binden, können Sie den Wert über einen IValueConverter ausführen, mit dem Sie den String in einen booleschen True/False-Wert umwandeln können, je nachdem, ob er ein Sternchen oder hat nicht.

<TabItem Header="TabItem"> 
    <TabItem.Style> 
     <Style TargetType="TabItem"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Header, RelativeSource={RelativeSource Self}, Converter={StaticResource HasAsteriskConverter}}" Value="True"> 
        <Setter Property="Foreground" Value="Blue" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TabItem.Style> 
<Grid /> 
</TabItem> 

Beachten Sie, dass mein Beispiel in den Vordergrund stellt, weil der Registerkarte Artikel Stil den Hintergrundwert außer Kraft zu setzen scheint, und diese Antworten noch die ursprüngliche Frage.

+0

Ich dachte, es wird einen Weg geben, es rein in XAML zu tun. – viky