使用Silverlight Toolkit的主题控件换肤
传统的Web网站换肤总是件麻烦的事.要定义好多种样式表来切换,在Silerlight中,换肤变的非常简单.微软为我们提供几种非常漂亮的皮肤样式,首先需要下载微软的Silverlight扩展控件安装包.
下载地址: http://silverlight.codeplex.com/releases/view/24246
(下载你电脑上对应的Silverlight版本)
在默认情况下,Silverlight Toollit 的皮肤文件位于:C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Themes\Xaml
简单的使用皮肤当然是拖入控件了,
比如:
<twilightBlue:TwilightBlueTheme> <Button Height="48" Width="300" Margin="198,151,264,0" VerticalAlignment="Top" Content="主题"/> </twilightBlue:TwilightBlueTheme>
效果:
当然这种方式达不到快速换肤的目的.
所以我们可以使用ISM实现全局可视树样式定义,
System.Windows.Controls.Theming; 该命名空间下有个ImplicitStyleManager的静态类(隐式样式管理器)简称ISM
ISM的ApplyMode属性包括3个值,
Auto 自动更新模型,每当元素树中内容发生变动时(触发LayoutUpload方法)ISM都会自动更新样式,所以性能较低
OneTime:一次性更新,
None:不使用样式更新功能,ISM此时被视为无效
在界面上随便放入几个控件,然后将
C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Themes\Xaml 下System.Windows.Controls.Theming.RainierOrange.xaml文件放入项目的Themes文件夹中(可以随便放入,该目录下的文件都是样式文件,本实例用System.Windows.Controls.Theming.RainierOrange.xaml演示)
后台代码:
public ThemDemo()
{
// 为初始化变量所必需
InitializeComponent();//资源字典文件的路径
Uri uri = new Uri("Themes/RainierOrange.xaml", UriKind.Relative);
ImplicitStyleManager.SetResourceDictionaryUri(LayoutRoot, uri);//设置更新模式
ImplicitStyleManager.SetApplyMode(LayoutRoot, ImplicitStylesApplyMode.Auto);
//应用样式到Gride控件
ImplicitStyleManager.Apply(LayoutRoot);}
当然也可以在XAML代码中引用.
效果:
注:System.Windows.Controls.Theming.RainierOrange.xaml文件添加进项目后,要把文件的属性改为 内容,否则编译会报错.
阳光总在风雨后…