85 votes

Définir la propriété Style d'une étiquette WPF en code ?

Dans App.xaml, j'ai le code suivant :

<Application.Resources>
    <Style x:Key="LabelTemplate" TargetType="{x:Type Label}">
        <Setter Property="Height" Value="53" />
        <Setter Property="Width" Value="130" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="Margin" Value="99,71,0,0" />
        <Setter Property="VerticalAlignment" Value= "Top" />
        <Setter Property="Foreground" Value="#FFE75959" />
        <Setter Property="FontFamily" Value="Calibri" />
        <Setter Property="FontSize" Value="40" />
    </Style>
</Application.Resources>

Il s'agit d'un modèle générique pour mes étiquettes.

Dans le code XAML principal, j'ai la ligne de code suivante :

<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />

Cependant, j'aimerais initialiser la propriété Style par le biais du code. J'ai essayé :

label1.Style = new Style("{StaticResource LabelTemplate}");

y

label1.Style = "{StaticResource LabelTemplate}";

Aucune des deux solutions n'est valable.

Toute aide serait appréciée :).

198voto

Damascus Points 3109

Où, dans le code, essayez-vous d'obtenir le style ? Derrière le code ?

Vous devriez écrire ceci :

Si vous êtes dans le code-behind :

Style style = this.FindResource("LabelTemplate") as Style;
label1.Style = style;

Si vous êtes ailleurs

Style style = Application.Current.FindResource("LabelTemplate") as Style;
label1.Style = style;

Note de bas de page : ne nommez pas un Style avec le mot-clé Template vous finirez par confondre une Style et un Template et vous ne devriez pas, car il s'agit de deux concepts différents.

3voto

Allen Points 74

Veuillez vérifier si le résultat est de type "null" ou vous serez triste... ... [...] this.Style = style ;

0voto

Juan Pablo Gomez Points 1669

C'est peut-être une vieille question, mais si vous essayez une application W10 UWP, vous devez utiliser la collection de ressources de chaque objet ou la collection de ressources de l'objet Application.

KeyValuePair<object,object> styl = this.Resources
    .FirstOrDefault(x => x.Key == "MyStyleTemplateName");
if (styl.Value != null)
    Style MyStyle = (Style)styl.Value;

MyStyleTemplateName doit être défini comme une ressource de cette

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X