主題
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下拉列表然后選擇一個主題,該列表僅顯示項目中引用的主題。
生成的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文件所做的更改。
- 參考DevExpress.Data.Desktop.v23.1程序集。
- 在應用程序啟動時設置屬性為主題名稱。
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
在應用程序啟動時設置屬性為,這種方法覆蓋了使用方法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主題
只有的容器才能重置DevExpress主題Controls?:
- 重置應用程序主題。
- 僅對包含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 | |
BarSplitItemThemeSelectorBehavior | |
GalleryThemeSelectorBehavior | |
RibbonGalleryItemThemeSelectorBehavior | |
HamburgerSubMenuThemeSelectorBehavior |
使用傳統的默認主題
您可以使用屬性來指定應用程序應使用的舊版默認主題:
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主題在和主題之間切換,應該選擇以下任何一個選項:
- 參考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 包。
以下代碼示例將m主題應用于應用程序:
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 WPF Controls所需的時間,以下主題支持輕量級模板:
下表列出了支持輕量級模板的 DevExpress WPF Controls以及您應該用來啟用/禁用輕量級模板的屬性:
標準WPF控件屬性
當應用程序使用下面的DevExpress WPF Themes之一時,您可以指定Background、 BorderBrush和BorderThickness屬性值來改變標準WPF控件的外觀:
下面的代碼示例在應用Office2016WhiteSE主題時會將標準WPF 的屬性設置為紅色:
<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>