有人在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"];
这是不可能的。我见过的最好的变通方法是微软的Nikhil Kothari:
http://www.nikhilk.net/Silverlight-Themes.aspx
无论如何,在App.xaml中集中定义样式有一个主要缺点,那就是当您从其他用户控件引用这些样式时,它会破坏所有设计器支持。我还没有用过,但Nikhil的主题引擎看起来很有前途,我有一种有趣的感觉,他的许多想法最终都会成为silverlight产品。
这个问题在Silverlight3中消失了,因为那里的样式是可变的——耶!
我不知道这是否有帮助,但我相信您可以在运行时根据需要多次更改控件的模板。也许这将是一个潜在的变通办法。