zoukankan      html  css  js  c++  java
  • 使用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[
    0as 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

  • 相关阅读:
    MySQL数据库to_char() to_date()
    爬虫的基本要求和考核标准
    打印MySQL操作错误
    暖通施工时遇到大梁不需要打洞,开小孔的三通时无需放样
    CAD 图纸上的实体的扩展数据不能记数据库中的ID 因为数据库数据删除时,ID也被删除,这样就找不到该实体的信息了
    关于定时关机的命令 shutdown s t 30 at 12:00 shutdown s
    下次坐飞机时,我要揣个弹弓进去, 因为我要去完成我小时候想完成而没能完成的梦想
    CAD 块与块相交,交点在块的边界上,不在块内的某实体上
    豆奶粉干吃好吃
    CAD 我们用弧度时 不要去定义Pi是多少,用Math.Pi
  • 原文地址:https://www.cnblogs.com/daizhj/p/1378090.html
Copyright © 2011-2022 走看看