SL4.0 动态换Theme的方法
关于在s4中只用代码来实现肤皮的切换使用的变化和sl3相比是比较大的,因为sl4没有了ImplictStyleManager这个theme管理类。
那么我们要实现通过代码动态地更换样式就很难吗?并非如此。
首先我们要确保你要使用的theme文件引入你的工程中,
本文中使用的是ExpressionDark.xaml,这是silverlight toolkit中自带的一套theme。(我稍微改了下代码,有些地方可能通不过的)
然后把它所使用到的命名空间都引用到工程中。
然后重点部份就是代码的实现了,操作的复杂度与sl3差不多,只要几句代码即可实现:
把SL3的代码替换掉就可以了
SL4:
以上代码中:是通过ResourceDictionary去加载theme文件,然后通过Resources.MergedDictionaries.Add方法把theme应用到当前应用中。思维上与代替了ImplictStyleManager差不多。
同时,通上以上示例代码,你就可以动态地在你的应用中使用多个Theme文件,然后动态地切换不同的样式了。
DEMO下载地址:http://download.youkuaiyun.com/source/2580356
PS:里面的ExpressionDark.xaml是我改了的。其他里面的主题是以前SL3的,如果要使用的话,就参照ExpressionDark.xaml改一下就可以用了,不知道现在有没有下的。因为现在SL4 TOOLKIT3多加了一些控件,所以改起来还是有点麻烦,有些元素也相应的变了。
2010年12月24日:
偶然的机会找到了SL4的主题库,现在大家就不用在去自己改主题了。
下载地址:http://download.youkuaiyun.com/source/2934899 (这个使用和以前那个略有不同,如果报COM错误的话,那是因为没有引用DLL。在加入XAML的同时还要引用DLL)
另外还奉送个Silverlight 4 Toolkit Demo
下载地址:http://download.youkuaiyun.com/source/2934931