使用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>

效果:

TM截图未命名

  当然这种方式达不到快速换肤的目的.

所以我们可以使用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代码中引用.

效果:

TM截图未命名

注:System.Windows.Controls.Theming.RainierOrange.xaml文件添加进项目后,要把文件的属性改为 内容,否则编译会报错.

 

阳光总在风雨后…

posted on 2010-05-24 15:22  小刚qq  阅读(1301)  评论(0编辑  收藏  举报