2017-07-06 4 views
0

Hier ist der XAML-Code, den ich habe:Wie kann ich einem Label einen Trigger hinzufügen, indem ich C# anstelle von XAML verwende?

<Label x:Name="faveLabel" FontFamily="FontAwesome" 
    XAlign="Center" FontSize="23"> 
    <Label.Triggers> 
     <DataTrigger TargetType="Label" Binding="{Binding Favorite}" Value="true"> 
     <Setter Property="TextColor" Value="Red"/> 
     </DataTrigger> 
     <DataTrigger TargetType="Label" Binding="{Binding Favorite}" Value="false"> 
     <Setter Property="TextColor" Value="Gray"/> 
     </DataTrigger> 
    </Label.Triggers> 
</Label> 

Was ich dies bereits nach der Definition der zu C#

 var label = new Label() 
     { 
      FontFamily = "FontAwesome", 
      HorizontalTextAlignment = TextAlignment.Center, 
      FontSize = 23, 
     } 

     var labelTrigger = new DataTrigger(label) 
     { 
      Target 


     } 
dies unten zu tun, aber bald tun möchte, ist zu ändern

Ich versuchte Start äußeres Etikett Ich erkannte, dass ich nicht weiß, wie man den Auslöser definiert. Kann mir jemand Ratschläge geben, wie ich das machen kann?

Antwort

2

ich das nicht testen habe, aber das sollte man auf dem richtigen Weg bringen:

// Trigger for Favorite = true 
DataTrigger triggerTrue = new DataTrigger(typeof(Label)); 
triggerTrue.Value = true; 
triggerTrue.Binding = new Binding() { Path = "Favorite" }; 
Setter setterTrue = new Setter(); 
setterTrue.Property = Label.TextColorProperty; 
setterTrue.Value = Color.Red; 
triggerTrue.Setters.Clear(); 
triggerTrue.Setters.Add(setterTrue); 
label.Triggers.Add(triggerTrue); 

// Trigger for Favorite = false  
DataTrigger triggerFalse = new DataTrigger(typeof(Label)); 
triggerFalse.Value = false; 
triggerFalse.Binding = new Binding() { Path = "Favorite" }; 
Setter setterFalse = new Setter(); 
setterFalse.Property = Label.TextColorProperty; 
setterFalse.Value = Color.Red; 
triggerFalse.Setters.Clear(); 
triggerFalse.Setters.Add(setterFalse); 
label.Triggers.Add(triggerFalse); 

Quelle: https://social.msdn.microsoft.com/Forums/vstudio/en-US/797753f4-5db2-4852-a9fb-1ed989fe6413/add-datatrigger-programmatically?forum=wpf

+1

die richtige Antwort sein, aber der Code sieht schrecklich aus! Um Gottes Willen, benutze einfach XAML oder ändere die Farbe in einer Bindung. – hvaughan3

Verwandte Themen