我需要在代码中修改资源中的样式。我已经知道我可以像这样访问Setter:
Style st = (Style)this.Resources["myStyle"];
set.Setters.Etc...但我需要在该样式中更改特定Setter的值。有什么办法可以做到吗?
另外,如何根据"Property“在setters列表中检索适当的setter
谢谢
发布于 2010-12-21 02:34:19
可能不是最“干净”的方法,但我发现了一些实际有效的方法:
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对象。
发布于 2010-12-21 01:50:58
像这样的东西必须要做:
SetterBase sb = style.Setters[0];
Setter s = (Setter)sb;
s.TargetName = "abcd";(至少在WPF中)
编辑:
在Silverlight中没有TargetName,但你仍然可以访问Property和Value。所以,你会说像if (s.Property == Button.IsEnabled) s.Value = false;这样的东西。
编辑:
哦,你自己找到了更好的解决方案。:-)不知道不允许更改Value。
https://stackoverflow.com/questions/4492316
复制相似问题