获取样式对象的特定setter

时间:2012-01-08 02:03:06

标签: wpf silverlight styles code-behind setter

我想知道如何从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,所以我有点累了,工作过度了 - 所以请你再次澄清我的问题,以防你有什么麻烦猜测我需要的东西;)

2 个答案:

答案 0 :(得分:2)

样式中的setter无论如何都会被密封(可能在使用样式时与包含集合一起),因此您无法修改它,样式应该是持久的。我建议你换一个新的风格,或尝试以不同的方式处理。

答案 1 :(得分:1)

    2015-12-01 00:04:39 is my timestamp