在代码中设置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必须被定义为这个的资源