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

主题


立即下载DevExpress WPF

DevExpress WPF控件提供了30多个定制设计的应用程序主题,您可以在免费的WPF主题设计器应用程序中使用这些主题并且无需修改或自定义。

请参阅主题列表来获取可用的主题列表,可以将每个主题应用于DevExpress WPF控件和支持的标准WPF控件。

Lightweight Themes主题包含可用的轻量级主题列表,这些主题在视觉上复制常规主题,但提供更快的启动时间和消耗更少的内存。

演示

当您在应用程序中引用DevExpress WPF库时,应用程序将应用Office2019Colorful主题,这个主题影响所有的DevExpress WPF Controls和支持的标准WPF控件,您可以重置应用于 Standard WPF Controls的DevExpress主题。

支持的标准控件列表

以下标准WPF控件支持DevExpress WPF主题:

这些控件仅在Office2016SE、VS2017、Office2019和VS2019主题中受支持。

应用DevExpress主题

要应用主题,必须在项目中引用主题程序集或主题NuGet包。

在应用程序中应用DevExpress主题
方法1

打开窗口或用户控件的快速操作或智能标签,展开ApplicationTheme下拉列表然后选择一个主题,该列表仅显示项目中引用的主题。

DevExpress VCL图表控件

生成的App.config文件如下所示:

  • .NET

App.config:

...
<configuration>
<configSections>
<section name="DXThemeManager"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</configSections>
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>Office2019Colorful</value>
</setting>
</DXThemeManager>
</configuration>
...
  • .NET Framework

App.config:

<configuration>
<configSections>
<sectionGroup name="userSettings"
type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="DXThemeManager"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<userSettings>
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>Office2019Colorful</value>
</setting>
</DXThemeManager>
</userSettings>
</configuration>
方法2

这种方法覆盖了方法1对App.config文件所做的更改。

  1. 参考DevExpress.Data.Desktop.v23.1程序集。
  2. 在应用程序启动时设置ApplicationThemeHelper.ApplicationThemeName属性为主题名称。

C#:

public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
ApplicationThemeHelper.ApplicationThemeName = Theme.MetropolisLightName;
base.OnStartup(e);
}
}

VB.NET:

Class Application
Protected Overrides Sub OnStartup(e As StartupEventArgs)
ApplicationThemeHelper.ApplicationThemeName = Theme.MetropolisLightName
MyBase.OnStartup(e)
End Sub
End Class

提示:您可以将RibbonGalleryItemThemeSelector添加到应用程序中。

将DevExpress主题应用到容器中

指定附加的ThemeManager.ThemeName属性,您可以将该属性应用于DevExpress WPF控件和支持的WPF标准控件。下面的代码示例将Office2016SEWhite主题应用于ThemedWindow,将Office2019Black主题应用于GridControl:

<ThemedWindow ...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
dx:ThemeManager.ThemeName="Office2016SEWhite">
<dxg:GridControl dx:ThemeManager.ThemeName="Office2019Black">
...
</dxg:GridControl>
</ThemedWindow>

重置应用的DevExpress主题

当您重置主题时,DevExpress WPF主题不再影响标准WPF控件,DevExpress WPF控件的外观来自于内置在控件组件中的DeepBlue主题。

重置应用DevExpress主题到应用程序
方法1

点击窗口智能标签中的“X”按钮(disablethem-button .png):

窗口

生成的App.config文件如下所示:

...
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>None</value>
</setting>
</DXThemeManager>
...

如果使用Quick Actions,则需要手动编辑App.config文件。

方法2

在应用程序启动时设置ApplicationThemeHelper.ApplicationThemeName属性为Theme.NoneName,这种方法覆盖了使用方法1对App.config文件所做的更改。

C#:

using DevExpress.Xpf.Core;
...
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
ApplicationThemeHelper.ApplicationThemeName = Theme.NoneName;
base.OnStartup(e);
}
}

VB.NET:

Imports DevExpress.Xpf.Core
...
Public Partial Class App
Inherits Application
Protected Overrides Sub OnStartup(ByVal e As StartupEventArgs)
ApplicationThemeHelper.ApplicationThemeName = Theme.NoneName
MyBase.OnStartup(e)
End Sub
End Class
重置应用于容器的DevExpress主题

设置附加的ThemeManager.ThemeName属性为None:

<ThemedWindow ...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid">
<dxg:GridControl dx:ThemeManager.ThemeName="None">
...
</dxg:GridControl>
</ThemedWindow>
仅为标准WPF控件重置DevExpress主题

只有标准WPF的容器才能重置DevExpress主题Controls?:

  1. 重置应用程序主题。
  2. 仅对包含DevExpress WPF控件的容器应用主题。

App.config:

...
<DXThemeManager>
<setting name="ApplicationThemeName" serializeAs="String">
<value>None</value>
</setting>
</DXThemeManager>
...

MainWindoe.xaml:

<ThemedWindow ...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid">
<dxg:GridControl dx:ThemeManager.ThemeName="Office2019White">
...
</dxg:GridControl>
<ComboBox>
...
</ComboBox>
</ThemedWindow>

保存运行时应用的主题

应用程序在启动时会使用应用程序配置文件中指定的主题,调用ApplicationThemeHelper.SaveApplicationThemeName方法将当前主题保存到应用程序的配置文件中:

C#:

ApplicationThemeHelper.ApplicationThemeName = Theme.MetropolisLightName;
ApplicationThemeHelper.SaveApplicationThemeName();

VB.NET:

ApplicationThemeHelper.ApplicationThemeName = Theme.MetropolisLightName
ApplicationThemeHelper.SaveApplicationThemeName()

添加一个主题选择器到应用程序中

DevExpress WPF控件包括以下MVVM行为,允许在应用程序中实现主题选择器:

选择器 GitHub 例子
BarSubItemThemeSelectorBehavior Example
BarSplitItemThemeSelectorBehavior Example
GalleryThemeSelectorBehavior Example
RibbonGalleryItemThemeSelectorBehavior Example
HamburgerSubMenuThemeSelectorBehavior Example

使用传统的默认主题

您可以使用CompatibilitySettings.LegacyDefaultTheme属性来指定应用程序应使用的旧版默认主题:

C#:

using DevExpress.Xpf.Core;
...
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
CompatibilitySettings.LegacyDefaultTheme = LegacyDefaultTheme.Office2016White;
base.OnStartup(e);
}
}

VB.NET:

Imports DevExpress.Xpf.Core
...
Public Partial Class App
Inherits Application
Protected Overrides Sub OnStartup(ByVal e As StartupEventArgs)
CompatibilitySettings.LegacyDefaultTheme = LegacyDefaultTheme.Office2016White
MyBase.OnStartup(e)
End Sub
End Class

使用Windows应用模式

最新的DevExpress WPF主题家族包括System主题,这个主题不引入自己的新外观和感觉选项,相反它读取Windows设置并应用一个现有主题来匹配当前的操作系统外观,然后您的应用程序看起来与用户在其机器上运行的其他软件一致。

下表列出系统主题名称及对应主题在暗/亮操作系统模式下生效:

主题

您应该同时引用(Dark和Light)两个主题版本的程序集/NuGet包,例如要允许Win11System主题在Win11LightWin11Dark主题之间切换,应该选择以下任何一个选项:

  • 参考DevExpress.Xpf.Themes.Win11Dark.v22.2.dll和DevExpress.Xpf.Themes.Win11Light.v22.2.dll程序集。
  • 参考DevExpress.Wpf.Themes.Win11Dark和DevExpress.Wpf.Themes.Win11LightNuGet 包。
  • 参考DevExpress.Wpf.Themes.AllNuGet 包。

以下代码示例将VS2019System主题应用于应用程序:

C#:

public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
ApplicationThemeHelper.ApplicationThemeName = Theme.VS2019SystemName;
base.OnStartup(e);
}
}

VB.NET:

Class Application
Protected Overrides Sub OnStartup(e As StartupEventArgs)
ApplicationThemeHelper.ApplicationThemeName = Theme.VS2019SystemName
MyBase.OnStartup(e)
End Sub
End Class

System主题在主题选择器中可用。

应用触摸主题

DevExpress WPF触摸主题只影响元素的外观(大小、填充、边距等)。

添加;Touch到主题名称后,应用 touch-friendly的主题版本:

提示:TouchlineDark主题是 touch-friendly (默认设置),您不需要在其主题名称后面附加;Touch。

<ThemedWindow ...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
dx:ThemeManager.ThemeName="Office2013;Touch">
...
</ThemedWindow>
列表
DevExpress VCL图表控件

预加载主题

控件在运行应用程序时加载主题资源,使用PreloadThemeResourceAsync方法在应用程序启动时异步加载和缓存所有主题资源。该方法减少了应用程序冻结,您可以将runTypeInitializers方法参数设置为true来调用静态构造函数并加速控件初始化。

轻量级模板

轻量级模板包含更少的可视化元素,并减少了加载DevExpress WPF Controls所需的时间,以下主题支持轻量级模板:

1

下表列出了支持轻量级模板的 DevExpress WPF Controls以及您应该用来启用/禁用轻量级模板的属性:

属性

标准WPF控件属性

当应用程序使用下面的DevExpress WPF Themes之一时,您可以指定Background、 BorderBrush和BorderThickness属性值来改变标准WPF控件的外观:

主题

下面的代码示例在应用Office2016WhiteSE主题时会将标准WPF Button background属性设置为红色:

<dx:ThemedWindow
...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
dx:ThemeManager.Theme="Office2016WhiteSE">
<Grid>
<Button Content="Button" Background="Red" />
</Grid>
</dx:ThemedWindow>
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP