我想知道如何从Silverlight中的代码隐藏中的样式对象中检索特定的setter 。
我有一个正确加载并应用于某个对象的样式S.然后在运行时我想改变这个风格的一个特定的setter 说它的背景设置器(当然我想要的是改变一个特定的setter的值)。
为此,我查看了Setters 集合,其类型为 SetterBaseCollection ,并包含此样式的所有setter。到现在为止还挺好。这个集合似乎包含了在XAML中定义的所有setter,但是如何访问它们?
当我遍历这个集合时,我正在处理“Setter”类型的对象。但我不知道如何选择包含“背景”属性的那个。
// this works totally fine; the variable myStyle is getting the correct Style
myStyle = this.Resources["myStyle"] as Style;
// the myStyle.Setters collection seems to contain all setters of the style
foreach (Setter s in myStyle.Setters) {
// so now what to do to get the setter that sets the Background property of my style ??
// my naive approach did not work:
if (s.Property.ToString().equals("Background")) {
// do something
}
}
(Setter对象确实有一个Name属性,实际上这正是我想要完成与字符串“Background”的比较 - 并且调试提供了这个属性真正包含字符串“Background”。...但是这是一个非公开的属性!
如果有人有任何建议很好 :)
P.S。我当地的时间是凌晨03:00,所以我有点累了,工作过度了 - 所以请你再次澄清我的问题,以防你有什么麻烦猜测我需要的东西;)
答案 0 :(得分:2)
样式中的setter无论如何都会被密封(可能在使用样式时与包含集合一起),因此您无法修改它,样式应该是持久的。我建议你换一个新的风格,或尝试以不同的方式处理。
答案 1 :(得分:1)
2015-12-01 00:04:39 is my timestamp