莱科宁

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

开发环境:vs2010+sl4+ Toolkit April 2010

1、 安装好Microsoft Silverlight 4 Toolkit April 2010

2、 打开Toolkit  安装目录下的 Themes/xaml 文件夹 , 你可以看到非常多的 xaml 主题文件

这些xaml文件添加进项目后,要把文件的属性 "Page" 改为 "内容",否则编译会报错.

如图:

3、 新建一个silverlight 项目,并在项目下建一个 Themes 文件夹

4、 把Toolkit  安装目录下的 Themes/xaml 文件夹下的文件拷贝到 Themes 下

效果如图:

5、引入 dll ,命名空间(有好多,可以编译根据错误提示查看需要引入什么)

效果如图:

6、 设计Demo 界面

右上角放一个combobox  用来选择皮肤

中间爱放啥就放啥

 

7、 关键代码

// 匹   配   路   径  

String  skinStr =  "Themes/System.Windows.Controls.Theming."  + skinKey +  ".xaml" ;

//获取资源

Uri  uri =  new   Uri (skinStr, UriKind .Relative);

//应用猪蹄

Theme .SetApplicationThemeUri( App .Current, uri);

8、 源码

Xaml:

< UserControl  x : Class ="SkinsDemoTwo.MainPage"

     xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

     xmlns : x ="http://schemas.microsoft.com/winfx/2006/xaml"

     xmlns : d ="http://schemas.microsoft.com/expression/blend/2008"

     xmlns : mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"

     mc : Ignorable ="d"

     d : DesignHeight ="300"  d : DesignWidth ="400"  xmlns : sdk ="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

 

     < Grid  x : Name ="LayoutRoot"  Background ="White">

         < Grid.RowDefinitions >

             < RowDefinition  Height ="30" />

             < RowDefinition  Height ="*" />

         </ Grid.RowDefinitions >

         < ComboBox  x : Name ="cbSkins"  Grid.Row ="0"  Height ="30"  Width ="100"  HorizontalAlignment ="Right"  SelectionChanged ="ComboBox_SelectionChanged">

           

         </ ComboBox >

         < sdk : Calendar  Grid.Row ="1"  Height ="168"  HorizontalAlignment ="Left"  Margin ="24,38,0,0"  Name ="calendar1"  VerticalAlignment ="Top"  Width ="171" />

         < Button  Content ="Button"  Grid.Row ="1"  Height ="115"  HorizontalAlignment ="Left"  Margin ="236,64,0,0"  Name ="button1"  VerticalAlignment ="Top"  Width ="144" />

     </ Grid >

</ UserControl >

 

Cs:

using  System;

using  System.Collections.Generic;

using  System.Linq;

using  System.Net;

using  System.Windows;

using  System.Windows.Controls;

using  System.Windows.Documents;

using  System.Windows.Input;

using  System.Windows.Media;

using  System.Windows.Media.Animation;

using  System.Windows.Shapes;

using  System.Windows.Controls.Theming;

 

namespace  SkinsDemoTwo

{

     public   partial   class   MainPage  :  UserControl

    {

         public  MainPage()

        {

            InitializeComponent();

            initSkins();

        }

 

         void  initSkins() 

   { 

            cbSkins.Items.Add( "BubbleCreme" );

            cbSkins.Items.Add( "BureauBlack" );

            cbSkins.Items.Add( "BureauBlue" );

            cbSkins.Items.Add( "ExpressionDark" );

            cbSkins.Items.Add( "ExpressionLight" );

            cbSkins.Items.Add( "RainierOrange" );

            cbSkins.Items.Add( "RainierPurple" );

            cbSkins.Items.Add( "ShinyBlue" );

            cbSkins.Items.Add( "ShinyRed" );

            cbSkins.Items.Add( "SystemColors" );

            cbSkins.Items.Add( "TwilightBlue" );

            cbSkins.Items.Add( "WhistlerBlue" );

        }

 

         private   void  ComboBox_SelectionChanged( object  sender,  SelectionChangedEventArgs  e)

        {

             // 获取你选择的主题

             String  skinKey = cbSkins.SelectedValue.ToString();

             // 匹配路径

             String  skinStr =  "Themes/System.Windows.Controls.Theming."  + skinKey +  ".xaml" ;

             // 获取主题资源

             Uri  uri =  new   Uri (skinStr, UriKind.Relative);

             // 应用主题

             Theme.SetApplicationThemeUri(App.Current, uri);

        }

    }

}

 

posted on 2011-02-24 09:58  莱科宁  阅读(357)  评论(0编辑  收藏  举报