2017-10-17 3 views
0

J'ai une étiquette qui ressemble à ceci:un attribut à une valeur de style par défaut dans XAML Xamarin.Forms

<Label Style="{StaticResource myStyle}" x:Name="TestLabel"> 

Le style lié définit la couleur d'arrière-plan de l'étiquette à la couleur rouge.

Puis, plus tard dans le code, je fais ceci:

TestLabel.SetValue(Label.BackgroundColorProperty, Color.Green); 

Ceci définit la couleur d'arrière-plan de l'étiquette verte.

Mais ensuite, je dois effacer la couleur verte que j'ai réglée manuellement, et j'ai besoin de la réinitialiser à la valeur par défaut, dictée par le style lié (dans ce cas, le rouge).

donc je fais ceci:

TestLabel.ClearValue(Label.BackgroundColorProperty); 

Mais au lieu de revenir en arrière au rouge, la couleur de fond est alors retiré complètement et devient transparente (ce qui est le paramètre par défaut pour une étiquette, sans styles qui s'y rattachent). TestLabel.SetValue (Label.BackgroundColorProperty, Color.Red) ;, mais je ne peux pas faire cela, car j'ai besoin de la couleur pour revenir à tout ce qui est attaché au style est, puisque différentes étiquettes ont des styles différents attachés)

+0

Utilisez-vous le modèle mvvm? –

+0

Pourquoi ne pas simplement garder la trace de la couleur précédente et la régler lorsque vous essayez de la réinitialiser. 'var color = TestLabel.BackgroundColor; ... TestLabel.BackgroundColor = color; ' – Ada

Répondre

0

La meilleure façon de définir ou de réinitialiser l'attribut utilise le déclencheur au lieu du jeu manuel.

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/triggers/

+0

Je ne vois pas vraiment comment utiliser les déclencheurs ici car j'ai besoin que la couleur change lors de conditions spécifiques dans le code, ce n'est pas seulement un simple événement OnMouseOver ou quelque chose comme ça – Askerman

+0

ne vous a pas eu. quel genre de condition vous utilisez? pourquoi utilisez-vous ce TestLabel.ClearValue? si vous souhaitez modifier la couleur rouge, réglez à nouveau en utilisant ce TestLabel.SetValue (Label.BackgroundColorProperty, Color.Red); –

+0

Le déclencheur est basé sur la condition et lorsque la valeur a été modifiée, elle définit automatiquement la couleur par défaut. –