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,在这里就不一一列举了。

  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/oyjj/p/2132981.html
Copyright © 2011-2022 走看看