Установка свойства Style метки WPF в коде?
В 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}";
Ни одно из решений не было.
Любая помощь будет оценена:).
Ответы
Ответ 1
Где в коде вы пытаетесь получить стиль? Код за?
Вы должны написать это:
Если вы находитесь в коде:
Style style = this.FindResource("LabelTemplate") as Style;
label1.Style = style;
Если вы где-то еще
Style style = Application.Current.FindResource("LabelTemplate") as Style;
label1.Style = style;
Нижняя заметка: не называйте Style
ключевым словом Template
, вы в конечном итоге запутаете Style
и Template
, и вы не должны поскольку это два разных понятия.
Ответ 2
Пожалуйста, проверьте нулевой результат стиля, или вам будет грустно... ... if (style!= null) this.Style = style;
Ответ 3
Возможно, старый вопрос, но если вы пытаетесь использовать приложение 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 должно быть определено как ресурс this