在代码中设置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}"; 

这两个解决scheme都是无效的

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

你在代码中的哪个位置试图获得风格? 代码后面?

你应该写这个:

如果你在代码隐藏:

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

如果你在其他地方

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

底注:不要用关键字Template命名一个Style ,你最终最终会混淆一个Style和一个Template ,而你不应该认为这是两个不同的概念。

请检查空风格的结果,否则你会伤心…… 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必须被定义为这个的资源