使用Silverlight Toolkit中的主题(Theme)

 在Silverlight Tookit 中提供了大约十种主题,大家可以根据自己的喜好,很容易就在项目中实现
动态换肤效果。当然其官方还推荐了几个制作主题的插件,使用这些 Blend插件可以很方便的生成各
格颜色的主题。

      好了,下面开始今天的正文。
    
     首先我们要下载该Tookit并将其中的相应DLL文件:Microsoft.Windows.Controls.Theming.dll加
到当前的示例中,另外就是相关的theme文件了,我已将10种主题文件放在了这个DEMO的themes 
文件夹下:

       

        并以“内容”方式作为"生成操作"的选项,如下:

     

        我们可以直接在XAML文件中声明使用主题的元素,比如:

复制代码
< UserControl  ..
xmlns:theming ="clr-namespace:Microsoft.Windows.Controls.Theming;assembly=Microsoft.Windows.Controls.Theming"
>
    
<!-- ShinyDarkPurple -->
< StackPanel  Width ="100"
  theming:ImplicitStyleManager.ApplyMode ="Auto"    
  theming:ImplicitStyleManager.ResourceDictionaryUri ="themes/ExpressionLight.xaml" >
         < Button  Content ="Button" />
         < CheckBox  Content ="CheckBox" />
         < RadioButton  Content ="RadioButton" />
         < Slider />
         < ListBox />
         < ProgressBar  Height ="15"  Value ="30" />
         < controls:Expander  ExpandDirection ="Down" />
     </ StackPanel >
<!-- ShinyDarkGreen -->
</ UserControl >
复制代码

    
    这样在该StackPanel下的所有控件样式均应用了ExpressionLight主题。另外我们也可以在CS
文件中对指定的控件设置相应的主题,比如本DEMO中所写的代码:

复制代码
public  Page()
{
    InitializeComponent();
     this .ThemeList.SelectionChanged  +=   new  SelectionChangedEventHandler(ThemeList_SelectionChanged);
     this .Loaded  +=   new  RoutedEventHandler(Page_Loaded);
}

void  Page_Loaded( object  sender, RoutedEventArgs e)
{
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ExpressionDark " , Content  =   " ExpressionDark " , DataContext  =   " themes/ExpressionDark.xaml " , IsEnabled  =   true  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ExpressionLight " , Content  =   " ExpressionLight " , DataContext  =   " themes/ExpressionLight.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " RainierOrange " , Content  =   " RainierOrange " , DataContext  =   " themes/RainierOrange.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " RainierPurple " , Content  =   " RainierPurple " , DataContext  =   " themes/RainierPurple.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " RainierRadialBlue " , Content  =   " RainierRadialBlue " , DataContext  =   " themes/RainierRadialBlue.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ShinyBlue " , Content  =   " ShinyBlue " , DataContext  =   " themes/ShinyBlue.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ShinyDarkGreen " , Content  =   " ShinyDarkGreen " , DataContext  =   " themes/ShinyDarkGreen.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ShinyDarkPurple " , Content  =   " ShinyDarkPurple " , DataContext  =   " themes/ShinyDarkPurple.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ShinyDarkTeal " , Content  =   " ShinyDarkTeal " , DataContext  =   " themes/ShinyDarkTeal.xaml "  });
    ThemeList.Items.Add( new  ComboBoxItem() { Name  =   " ShinyRed " , Content  =   " ShinyRed " , DataContext  =   " themes/ShinyRed.xaml "  });

    SetTheme(ThemeList.Items[ 0 ]  as  ComboBoxItem);
}

private   void  ThemeList_SelectionChanged( object  sender, SelectionChangedEventArgs e)
{
    SetTheme(ThemeList.SelectedItem  as  ComboBoxItem);
}

// 设置相应的theme
void  SetTheme(ComboBoxItem comboBoxItem)
{
     if  (comboBoxItem  !=   null )
    {
        ControlPage control  =   new  ControlPage();
        Test.Children.Clear();
        Test.Children.Add(control);

        Uri uri  =   new  Uri(comboBoxItem.DataContext.ToString(), UriKind.Relative);
        ImplicitStyleManager.SetResourceDictionaryUri(control, uri);
        ImplicitStyleManager.SetApplyMode(control, ImplicitStylesApplyMode.Auto);
        ImplicitStyleManager.Apply(control);
    }
}

复制代码

 

     上面代码中的ControlPage 类即是我们要加载的控件页对象,在该对象上声明了一些控件,然后将这些控
件(集合)做为子控件加载到当前PAGE页面中的Stack元素(Test)中。这样我们运行一下这个DEMO,看一下
各个主题的显示效果:

     
        
      
 
             

    
        
      
   
    
             
      

    
              
   
    
        
      
    
    
        
  
    
        
  
    
        
      
 
  

   

     当然,官方还推荐了几个主题制作插件工具,比如: Kuler,以及插件Colorful Expression。
可以从这个链接中获得一些信息:)     

     好了,今天的内容就先到这里了,源码下载,请点击这里
    
     原文链接:http://www.cnblogs.com/daizhj/archive/2009/01/19/1378090.html

     作者: daizhj, 代震军

     Tags: silverlight,theme, toolkit, 风格

     网址: http://daizhj.cnblogs.com/
    
     在微软的Silverlight 开源控件项目: Silverlight Toolkit

转载于:https://www.cnblogs.com/xiurui12345/archive/2012/05/08/2489964.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值