logo Devexpress WPF控件文档中心
文档首页>>Devexpress WPF控件文档中心>>轻量级主题

轻量级主题


立即下载DevExpress WPF

DevExpress轻量级主题在视觉上复制常规主题,但提供更快的启动时间和消耗更少的内存。

您可以在机器上比较常规和轻量级主题的性能,再运行我们在以下存储库中提供的特别设计的应用程序:

View Example:WPF Lightweight Thtmes-Performance Tests

使用轻量级主题

将DevExpress.Wpf.ThemesLW NuGet包添加到您的项目中,或者引用DevExpress.Xpf.ThemesLW.v23.1程序集。

在应用程序构造函数中设置CompatibilitySettings.UseLightweightThemes属性为true。

在应用程序启动时设置ApplicationThemeHelperApplicationThemeName属性为主题名称,LightweightTheme类包含可用的轻量级主题。

C#:

using DevExpress.Xpf.Core;
// ...
public partial class App : Application {
static App() {
CompatibilitySettings.UseLightweightThemes = true;
}
protected override void OnStartup(StartupEventArgs e) {
ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.Win10Dark.Name;
base.OnStartup(e);
}
}

VB.NET:

Imports DevExpress.Xpf.Core
' ...
Public Partial Class App
Inherits Application

Private Shared Sub New()
CompatibilitySettings.UseLightweightThemes = True
End Sub

Protected Overrides Sub OnStartup(ByVal e As StartupEventArgs)
ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.Win10Dark.Name
MyBase.OnStartup(e)
End Sub
End Class

轻量级的主题改变应用程序中所有控件的外观,如果标准控件应该保持其原始外观,则将附加的dx:LightweightThemeManager.AllowStandardControlsTheming 属性设置为false。

主题列表

Windows 10主题

Win10Dark:

黑

Win10Light:

light
  • Win10Dark
  • Win10Light
  • Win10System[1](读取Windows应用模式)
  • Win10SystemColors[1](读取Windows应用程序模式和强调色)

Office 2019主题

Office2019Black:

黑色

Office2019Colorful (Default Theme):

亮色

Office2019HighContrast:

深色
  • Office2019Black
  • Office2019Colorful(默认主题)
  • Office2019HighContrast
  • Office2019System[1](读取Windows应用模式)
  • 还包括一组预定义的黑色和彩色主题调色板。

Visual Studio 2019主题

VS2019Blue:

主题

VS2019Dark:

主题

VS2019Light:

主题
  • VS2019Blue
  • VS2019Dark
  • VS2019Light
  • VS2019System[1](读取Windows应用程序模式)
  • 还包括一组预定义的蓝色、深色和浅色主题的调色板。

调色板

调色板允许将颜色(例如,公司颜色)集成到应用程序中,并自定义主题中使用的颜色,您可以创建自定义调色板或使用预定义的调色板

Palette是一个Dictionary的命名颜色,每个条目包括一个ColorName和一个Color值,您可以使用ColorName为任意数量的UI元素分配相应的颜色。

预定义的调色板

LightweightTheme类包含预定义的调色板主题和经典主题,下面的代码示例应用VS2019Dark主题与DeepSea调色板:

C#:

ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.VS2019DarkDeepSea.Name;

VB.NET:

ApplicationThemeHelper.ApplicationThemeName = LightweightTheme.VS2019DarkDeepSea.Name
自定义调色板

您可以使用自定义调色板颜色来创建一个新的轻量级主题:

  • 用调色板的颜色名称和它的新颜色创建一个Dictionary。

要找到所需的颜色名称,请查看以下文件夹中的轻量级主题资源:C:\Program Files\DevExpress 23.1\Components\Sources\XPF\DevExpress.Xpf.Themes\ThemesLW\Common。

C#:

var customPalette = new Dictionary<string, Color> {
{"Foreground", (Color)ColorConverter.ConvertFromString("#FFFF7200")},
{"SelectionBackground", Colors.Orange}
};
var customTheme = LightweightTheme.OverridePalette(LightweightTheme.Win10Dark, "CustomTheme", "Custom Theme", customPalette);
LightweightThemeManager.RegisterTheme(customTheme);
ApplicationThemeHelper.ApplicationThemeName = customTheme.Name;

VB.NET:

Dim customPalette = New Dictionary(Of String, Color) From {
{"Foreground", CType(ColorConverter.ConvertFromString("#FFFF7200"), Color)},
{"SelectionBackground", Colors.Orange}
}
Dim customTheme = LightweightTheme.OverridePalette(LightweightTheme.Win10Dark, "CustomTheme", "Custom Theme", customPalette)
LightweightThemeManager.RegisterTheme(customTheme)
ApplicationThemeHelper.ApplicationThemeName = customTheme.Name

修改轻量级主题资源

提示:我们不建议您修改可通过控件的内置API实现的任务的轻量级主题资源,轻量级主题资源和键可以在将来更改,因此更新到较新的DevExpress版本可能会更加复杂。

您可以自定义可视元素的主题资源(笔刷、厚度、颜色、样式、模板等),如下面的主题所述:修改主题资源

轻量级主题被设计为使用一组特定的主题键,每个DevExpress WPF程序集都包含LWKeyExtension类,您可以使用它来修改在此控件库中定义的轻量级主题资源:

<Window ...
xmlns:dxrt="http://schemas.devexpress.com/winfx/2008/xaml/ribbon/themekeys"
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys">
<Window.Resources>
<!-- Overrides the 'GridColumnHeader.Background' theme resource in all themes: -->
<SolidColorBrush x:Key="{dxgt:LWKey GridColumnHeader.Background}"
Color="Red"/>

<!-- Overrides the 'Backstage.Foreground' theme resource to 'Red' in all themes except 'Office2019Colorful'.
In this theme, the code sets the resource to 'Blue': -->
<SolidColorBrush x:Key="{dxrt:LWKey Backstage.Foreground}"
Color="Red"/>
<SolidColorBrush x:Key="{dxrt:LWKey Backstage.Foreground, ThemeName='Office2019Colorful'}"
Color="Blue"/>

<!-- LWKeys are similar to regular keys in most cases: -->
<!-- For example, the '{dxgt:LWKey GridColumnHeader.Background}' key is equal to -->
<!-- '{dxgt:GridColumnHeaderThemeKey ResourceKey=Background}' -->
</Window.Resources>
</Window>

在轻量级主题中,您可以不受任何限制地使用DynamicResource和StaticResource标记扩展,例如以下代码在应用程序中的任何位置都有效:

<StackPanel ...
xmlns:dxrt="http://schemas.devexpress.com/winfx/2008/xaml/ribbon/themekeys"
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys">
<!-- The DynamicResource is updated each time the application theme is changed. -->
<!-- The StaticResource is resolved only once at the application startup. -->
<Button Background="{StaticResource {dxgt:LWKey GridControl.Foreground}}"/>
<Button Background="{DynamicResource {dxrt:LWKey Backstage.Foreground}}"/>
</StackPanel>

用于修改常规主题资源的主题键也可以用于轻量级主题,唯一的区别是轻量级主题中的常规主题键变得与主题无关(不管ThemeName属性值如何):

<Window ...
xmlns:dxrt="http://schemas.devexpress.com/winfx/2008/xaml/ribbon/themekeys">
<Window.Resources>
<!-- The following code does not work because the ThemeName property (defined in regular theme keys)
is omitted in lightweight themes: -->
<SolidColorBrush x:Key="{dxrt:BackstageThemeKey ResourceKey=Foreground, ThemeName=Office2019Colorful}"
Color="Red"/>
<SolidColorBrush x:Key="{dxrt:BackstageThemeKey ResourceKey=Foreground, ThemeName=Office2019Black}"
Color="Blue"/>
</Window.Resources>
</Window>

使用说明

  • 不支持WPF主题设计器
  • 轻量级主题没有触摸版本。
  • 不能为轻量级主题预加载主题资源
  • 在设计时不应用轻量级主题。
  • 不能将轻量级主题应用于单个控件,只能应用于整个应用程序。
在线咨询
联系我们

客服热线
023-68661681

QQ客服

意见反馈


添加微信获专业服务

TOP