在代码中设置WPF标签的Style属性?

时间:2012-05-21 14:12:39

标签: c# wpf user-interface label

在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}";

两种解决方案均无效。

任何帮助将不胜感激:)。

3 个答案:

答案 0 :(得分:157)

你在代码中想要获得风格吗?代码背后?

你应该这样写:

如果您处于代码隐藏状态:

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

如果您在其他地方

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

底部注释:不要使用关键字Style命名Template,最终会让Style和{{1}混淆你不应该这样,因为这是两个不同的概念。

答案 1 :(得分:3)

请检查空格样式结果,否则你会很伤心......     ...      if(style!= null)                 this.Style = style;

答案 2 :(得分:0)

也许是一个老问题,但如果您正在尝试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 必须定义为

的资源