从代码</style>修改<style>

时间:2010-12-20 17:46:10

标签: silverlight

我需要从代码中修改资源中的样式。我已经知道我可以像这样访问Setters:

 Style st = (Style)this.Resources["myStyle"];
 set.Setters.Etc...

但我需要更改该样式中特定Setter的值。有没有办法做到这一点?

另外,如何根据“属性”

在setter列表中检索相应的setter

感谢

2 个答案:

答案 0 :(得分:2)

可能不是“最干净”的方式,但我发现了实际有用的东西:

Style myStyle = (Style)this.Resources["myStyle"];

SetterBase sb = myStyle.Setters.FirstOrDefault(z => (z as Setter).Property == Rectangle.FillProperty);
int iSetterIndex = myStyle.Setters.IndexOf(sb);

myStyle.Setters[iSetterIndex] = new Setter(Rectangle.FillProperty, newScrollThumbBackground);

似乎我不能替换setter的值,所以我只是使用property找到旧的Setter索引。然后用新的Setter对象替换找到的索引处的setter。

答案 1 :(得分:0)

这样的事必须这样做:

SetterBase sb = style.Setters[0];
Setter s = (Setter)sb;
s.TargetName = "abcd";

(至少在WPF中)

修改
在Silverlight中没有TargetName,但您仍然可以访问PropertyValue。所以,你说的是if (s.Property == Button.IsEnabled) s.Value = false;

修改
哦,你自己找到了更好的解决方案。 :-)不知道不允许更改Value