首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从代码修改<Style>

从代码修改<Style>
EN

Stack Overflow用户
提问于 2010-12-21 01:46:10
回答 2查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
 Style st = (Style)this.Resources["myStyle"];
 set.Setters.Etc...

但我需要在该样式中更改特定Setter的值。有什么办法可以做到吗?

另外,如何根据"Property“在setters列表中检索适当的setter

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-21 02:34:19

可能不是最“干净”的方法,但我发现了一些实际有效的方法:

代码语言:javascript
复制
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对象。

票数 2
EN

Stack Overflow用户

发布于 2010-12-21 01:50:58

像这样的东西必须要做:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4492316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档