web-dev-qa-db-fra.com

Définir la propriété Style d'une étiquette WPF dans le 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>

Ceci est destiné à fournir 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}");

et

label1.Style = "{StaticResource LabelTemplate}";

Aucune solution n'était valide.

Toute aide serait appréciée :).

72
Daniel

Où dans le code essayez-vous d'obtenir le style? Code derrière?

Vous devriez écrire ceci:

Si vous êtes en 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 un Style et un Template, et vous ne devriez pas, car ce sont deux concepts différents.

160
Damascus

S'il vous plaît vérifier le résultat de style null ou vous serez triste ... ... si (style! = Null) this.Style = style;

3
Allen

Peut-être une vieille question, mais si vous essayez W10 UWP app doit utiliser la collection de ressources de chaque objet ou la collection de ressources de l'objet Application

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

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

0
Juan Pablo Gomez