Установка свойства 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