在Silverlight 4中以编程方式设置控件的样式?

时间:2011-05-16 18:44:02

标签: wpf silverlight styles

我是Silverlight的新手,但当我用Google搜索时,我找不到任何相关信息。

我有一个按钮,我试图以编程方式设置样式。我有一个在XAML文件中定义的样式,我想将样式拉入C#,这样我就可以动态创建一个按钮并为其指定这种样式。到目前为止,这正是我的尝试:

button.Style = (Style)Resources["CloseButtonStyle"];

然而,它只是让按钮没有风格。是否有捷径可寻?我觉得这应该是显而易见的,但我无法让它发挥作用。

2 个答案:

答案 0 :(得分:2)

我可以调用button1.Style = (Style)Resources["NonExistentKey"];并且它使我的按钮完全没有样式,指出资源可能没有找到,你不会得到例外。

您可以直接访问Resources属性,但是样式是否真的在Window / UserControl的直接资源字典中/您有什么用?

答案 1 :(得分:2)

您假设当前对象上的Resources属性是包含已定义样式的属性。但是,我认为,鉴于您的问题的症状,CloseButtonStyle实际上是在控制层次结构中进一步定义的。

相反,您需要traverse your control hierarchy直到找到资源(或者如果您知道定义它的对象,则直接引用该对象)。不幸的是,Silverlight不包括像{WPF这样的FindResource调用,但实现自己的并不是太难。