webentwicklung-frage-antwort-db.com.de

Festlegen der Style-Eigenschaft eines WPF-Labels im Code?

In App.xaml habe ich den folgenden Code:

<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>

Dies soll eine allgemeine Vorlage für meine Etiketten bereitstellen.

Im Haupt-XAML-Code habe ich die folgende Codezeile:

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

Ich möchte jedoch die Style-Eigenschaft über Code initialisieren. Ich habe versucht:

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

und

label1.Style = "{StaticResource LabelTemplate}";

Keine der Lösungen war gültig.

Jede Hilfe wäre dankbar :).

72
Daniel

Wo im Code versuchen Sie, den Stil zu bekommen? Code dahinter?

Sie sollten dies schreiben:

Wenn Sie im Code-Behind sind:

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

Wenn Sie woanders sind

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

Bottom note: Benennen Sie ein Style nicht mit dem Schlüsselwort Template, da Sie letztendlich ein Style und ein Template, und Sie sollten nicht, da dies zwei verschiedene Konzepte sind.

160
Damascus

Bitte überprüfen Sie, ob das Ergebnis des Stils null ist, oder Sie werden traurig sein, wenn (style! = Null) this.Style = style;

3
Allen

Vielleicht eine alte Frage, aber wenn Sie W10 UWP-App versuchen, müssen Sie die Ressourcensammlung jedes Objekts oder die Ressourcensammlung des Anwendungsobjekts verwenden

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

Dabei muss MyStyleTemplateName als Ressource von this definiert werden

0