标签:windows phone 8.1 动态修改控件元素样式 在.cs中动态修改样式元素属性 修改style定义的资源里面的属性
关于设置控件属性样式的方法已经在之前的博客中有提及过,博客地址:设置控件样式的方法
当然在实际项目编写过程中,不光单纯的需要设置元素样式,有时候需要动态的修改元素的样式,这个时候就有些不
同了。需要针对不同的情形来选择不同的方法修改样式。
情形一:单纯的修改一个控件元素的样式,那么只要在.cs中仅仅针对这个控件的样式属性的修改即可。
情形二:如果是要针对同一类的所有控件的样式进行相同的属性修改,比如针对页面中所有的Label控件进行修改,
那么对应之前你在给这些Label控件设置样式的不同做法,如下:
1.一个一个的Label控件单独设置。
2.针对Label编写统一的style样式资源(Style x:key="style" target="Label"...),
3.设置一个Style资源,然后给每个Label引用这个资源
(Style x:key="labelStyle"...)(Labelstyle="{StaticResource labelStyle}")
而会有相应的修改方案,如下:
(以下的操作是 基于要修改Label的Background属性样式的假设)
针对情形二中的第1种情况,没啥说的,虽说是最笨的方法,但是最实在。
针对情形二中的第2种情况,可以这样做:(要依照上面定义的Style的key值)
Style style = this.Resources["style"] as Style;
// 找到Background的Setter
SetterBase sb = style.Setters.Where(s => ((Setter)s).Property ==
Label.BackgroundProperty).FirstOrDefault();
int index = style1.Setters.IndexOf(sb);
// 为Setter赋新值
style.Setters[index] = new Setter(Label.BackgroundProperty, new SolidColorBrush(Colors.Red));
针对情形二中的第3种情况,可以这样做:
你需要要新建一个Style对象进行修改,然后再把这个Style对象赋值给Label的Style属性:
Style style = this.Resources["labelStyle"] as Style;
Style newStyle = new Style(typeof(Label)) { BasedOn = style };
// 添加一个新的Setter,设置Background为Red
newStyle.Setters.Add(new Setter(Label.BackgroundProperty, new SolidColorBrush(Colors.Red)));
// 将新Style对象赋值给页面中需要修改的所有Label的Style属性
label1.Style = newStyle;
label2.Style = newStyle;............
如何在.cs中统一动态修改xaml中style资源定义的样式
标签:windows phone 8.1 动态修改控件元素样式 在.cs中动态修改样式元素属性 修改style定义的资源里面的属性
原文地址:http://blog.csdn.net/u010792238/article/details/45458985