В App.xaml у меня есть следующий код:
<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>
Это предназначено для предоставления общего шаблона для моих этикеток.
В основном коде XAML у меня есть следующая строка кода:
<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />
Однако я бы хотел инициализировать свойство Style с помощью кода. Я пытался:
label1.Style = new Style("{StaticResource LabelTemplate}");
и
label1.Style = "{StaticResource LabelTemplate}";
Ни одно из решений не было действительным.
Любая помощь будет оценена :).
c#
wpf
user-interface
label
Даниэль
источник
источник
Ответы:
Где в коде вы пытаетесь получить стиль? Код позади?
Вы должны написать это:
Если вы используете код программной части:
Style style = this.FindResource("LabelTemplate") as Style; label1.Style = style;
Если ты где-то еще
Style style = Application.Current.FindResource("LabelTemplate") as Style; label1.Style = style;
Нижнее примечание: не называйте a
Style
ключевым словомTemplate
, в конечном итоге вы запутаете aStyle
и aTemplate
, и вам не следует этого делать, поскольку это две разные концепции.источник
Пожалуйста, проверьте результат нулевого стиля или вам будет грустно ... ... if (style! = Null) this.Style = style;
источник
Возможно, старый вопрос, но если вы пытаетесь использовать приложение W10 UWP, оно должно использовать коллекцию ресурсов каждого объекта или коллекцию ресурсов объекта Application
KeyValuePair<object,object> styl = this.Resources .Where(x => x.Key.ToString() == "MyStyleTemplateName") .FirstOrDefault(); if (styl.Value != null) Style MyStyle = (Style)styl.Value;
Где MyStyleTemplateName должен быть определен как ресурс этого
источник