W App.xaml mam następujący kod:
<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>
Ma to na celu zapewnienie ogólnego szablonu dla moich etykiet.
W głównym kodzie XAML mam następujący wiersz kodu:
<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />
Chciałbym jednak zainicjować właściwość Style za pomocą kodu. Próbowałem:
label1.Style = new Style("{StaticResource LabelTemplate}");
i
label1.Style = "{StaticResource LabelTemplate}";
Żadne z rozwiązań nie było ważne.
Każda pomoc będzie mile widziana :).
c#
wpf
user-interface
label
Daniel
źródło
źródło
Odpowiedzi:
Gdzie w kodzie próbujesz uzyskać styl? Kod za?
Powinieneś to napisać:
Jeśli korzystasz z kodu:
Style style = this.FindResource("LabelTemplate") as Style; label1.Style = style;
Jeśli jesteś gdzie indziej
Style style = Application.Current.FindResource("LabelTemplate") as Style; label1.Style = style;
Dolna uwaga: nie nazywaj a
Style
słowem kluczowymTemplate
, w końcu pomylisz aStyle
i aTemplate
, a nie powinieneś, ponieważ są to dwie różne koncepcje.źródło
Sprawdź, czy nie ma wyniku w stylu null lub będziesz smutny ... ... if (style! = Null) this.Style = style;
źródło
Może stare pytanie, ale jeśli próbujesz aplikacja UWP W10, musi używać kolekcji zasobów każdego obiektu lub kolekcji zasobów obiektu aplikacji
KeyValuePair<object,object> styl = this.Resources .Where(x => x.Key.ToString() == "MyStyleTemplateName") .FirstOrDefault(); if (styl.Value != null) Style MyStyle = (Style)styl.Value;
Gdzie MyStyleTemplateName musi być zdefiniowany jako zasób this
źródło