zoukankan      html  css  js  c++  java
  • Developer Express V9.2中的 WPF Theme使用方法及资源名称总结

    Developer Express V9.1中的 WPF中的样式和模板是以资源的形式存在于

    DevExpress.Wpf.Core.v9.1.dll中的,在程序中引用这些样式可以迅速的改善界面的外观。

    V9.2版本中Theme的引入方法有了很大的变化,通过对Demo中代码的调试分析发现它引入了一个叫做ThemeManager的类来动态加载资源。下面我们来看看如何在工程中使用它:

    确保你已经安装了V9.2DX库,新建一个叫做dxThemeWPF Application工程。添加DX样式所在的Assembly到工程的Reference中:DevExpress.Wpf.Core.v9.2.dll

    我们可以试着将在V9.1时用的方法在这里使用一下:

    加入名称空间xmlns:dx=http://schemas.devexpress.com/winfx/2008/xaml/core

    <Window.Resources>

            <ResourceDictionary>

                <ResourceDictionary.MergedDictionaries>

                    <ResourceDictionary Source="{dx:UtilsResource Themes/Generic.xaml}"/>

                </ResourceDictionary.MergedDictionaries>

            </ResourceDictionary>

    </Window.Resources>

    引入Theme,并没有效果,调试一下,设断点

            public Window1()

            {

                InitializeComponent();

            }//在这行加入一个断点

    Watch里面添加this.Resources

    其中两个关键的属性:Keys就是资源的字符串名称或者是一个对象

    MergedDictionaries就是引入的资源,它里面会有KeysMergedDictionaries,逐级找下去即可。

    但是经过一番查找,发现这里并没有ButtonWpf控件的Object对象或字符串的Key,因而也不会产生任何效果。其原因是在V9.2版本中对Theme的资源字典使用的动态载入的形式,也就是通过代码的方式,起初只是一种推测,通过对Demo代码的调试分析,这一点得到了证实。

    InitializeComponent();之后加上这样一行代码

    ThemeManager.SetThemeName(this, "Azure");

    代码提示会提示你加上名称空间using DevExpress.Wpf.Utils.Themes;

    调试,给这行加上断点,F10单步,观察this.Resources这样运行后新加入了两个MergedDictionaries,其中新增的第一个中出现了熟悉的V9.1中的各种资源的名称了,按照序号1à0à0à0的顺序找下去可以得到最主要的一组资源字典的Key如下:

    +        [0]  {Name = "Button" FullName = "System.Windows.Controls.Button"}    object {System.RuntimeType}

    +        [1]  {Name = "ListBox" FullName = "System.Windows.Controls.ListBox"}  object {System.RuntimeType}

    +        [2]  {Name = "ScrollBar" FullName = "System.Windows.Controls.Primitives.ScrollBar"} object {System.RuntimeType}

    +        [3]  {Name = "RepeatButton" FullName = "System.Windows.Controls.Primitives.RepeatButton"}     object {System.RuntimeType}

    +        [4]  {Name = "Label" FullName = "System.Windows.Controls.Label"}  object {System.RuntimeType}

    +        [5]  {Name = "ToggleButton" FullName = "System.Windows.Controls.Primitives.ToggleButton"}     object {System.RuntimeType}

    +        [6]  {Name = "Slider" FullName = "System.Windows.Controls.Slider"}    object {System.RuntimeType}

    +        [7]  {Name = "GroupBox" FullName = "System.Windows.Controls.GroupBox"} object {System.RuntimeType}

    +        [8]  {Name = "RadioButton" FullName = "System.Windows.Controls.RadioButton"}    object {System.RuntimeType}

    +        [9]  {Name = "ScrollViewer" FullName = "System.Windows.Controls.ScrollViewer"}  object {System.RuntimeType}

    +        [10] {Name = "ToolTip" FullName = "System.Windows.Controls.ToolTip"}  object {System.RuntimeType}

    +        [11] {Name = "TabControl" FullName = "System.Windows.Controls.TabControl"} object {System.RuntimeType}

    +        [12] {Name = "Separator" FullName = "System.Windows.Controls.Separator"}   object {System.RuntimeType}

    +        [13] {Name = "ListBoxItem" FullName = "System.Windows.Controls.ListBoxItem"}    object {System.RuntimeType}

    +        [14] {Name = "RadioButtonList" FullName = "DevExpress.Wpf.Core.RadioButtonList"}    object {System.RuntimeType}

    +        [15] {Name = "TabItem" FullName = "System.Windows.Controls.TabItem"}  object {System.RuntimeType}

    他们都是Object对象,也就是说可以自动加上Style,拖几个控件进去试一下:

    V9.2支持4中样式了,Show一下:

                ThemeManager.SetThemeName(this, "Office2007Blue");

                ThemeManager.SetThemeName(this, "Office2007Black");

                ThemeManager.SetThemeName(this, "Office2007Silver");

    但是从Demo和实际运行的效果上来看后两个其实是一个,也就是说现在只有3Theme。对于DX已经提供替代的空间比如Edit空间似乎没有样式支持了。应该是推荐使用DXEdit控件,拖进去直接就有样式的。

    还有很多资源Keys,在这里就不一一列举了。

  • 相关阅读:
    ImageIO 操作图片
    ThreadLocal
    Mysql表字段命令alter add
    php中的for循环和js中的for循环
    获取当前URL地址和$_GET获取参数
    apache中的vhosts的配置。
    PHP获取前台传过来的时间年份,进行处理。
    php中的htmlspecialchars_decode()函数
    php分页类代码和使用
    cookies插件,记住cookies
  • 原文地址:https://www.cnblogs.com/oyjj/p/2132981.html
Copyright © 2011-2022 走看看