有人在 Silverlight 2 中找到了绕过不可变样式的好模式吗?
我的意思是,有没有人可以解决这样一个事实,即一旦设置了元素的样式,就无法以编程方式切换它,即这里的第二行将引发灾难性的失败异常:
this.TestButton.Style = (Style)Application.Current.Resources["Fred"];
this.TestButton.Style = (Style)Application.Current.Resources["Barney"];
有人在 Silverlight 2 中找到了绕过不可变样式的好模式吗?
我的意思是,有没有人可以解决这样一个事实,即一旦设置了元素的样式,就无法以编程方式切换它,即这里的第二行将引发灾难性的失败异常:
this.TestButton.Style = (Style)Application.Current.Resources["Fred"];
this.TestButton.Style = (Style)Application.Current.Resources["Barney"];
这是不可能的。我见过的最好的解决方法来自 Microsoft 的 Nikhil Kothari:
http://www.nikhilk.net/Silverlight-Themes.aspx
无论如何,在 App.xaml 中集中定义样式有一个主要缺点,即当您从其他用户控件引用这些样式时,它会破坏所有设计器支持。我没用过,但 Nikhil 的主题引擎看起来很有前途,而且我有一种有趣的感觉,他的许多想法最终都会成为 silverlight 产品。
这个问题在 Silverlight 3 中消失了,因为它的样式是可变的 - 耶!
我不知道这是否有帮助,但我相信您可以在运行时多次更改控件的模板。也许这将是一个潜在的解决方法。