調色板
調色板允許將顏色(例如,公司顏色)集成到應用程序中,并自定義主題中使用的顏色,您可以在此實例中創建自定義調色板或使用預定義的調色板。

Palette是一個命名顏色列表,每種顏色都有一個ColorName值和一個color值,您可以使用ColorName為任意數量的UI元素分配顏色:
提示:您可以使用編輯調色板顏色或將其。
包含調色板的主題
預定義的調色板
包括以下:
在代碼中應用調色板
提示:當您切換主題時,應用程序不會卸載已加載的主題程序集。
- 在項目中引用 NuGet包。
- 調用方法來啟用預定義的調色板。
- 將屬性設置為所需的predefined palette名稱和base theme名稱組合。
C#:
Theme.RegisterPredefinedPaletteThemes(); ApplicationThemeHelper.ApplicationThemeName = PredefinedThemePalettes.RedWine.Name + Theme.Office2019White.Name;
VB.NET:
Theme.RegisterPredefinedPaletteThemes() ApplicationThemeHelper.ApplicationThemeName = PredefinedThemePalettes.RedWine.Name + Theme.Office2019White.Name
提示:可以使用屬性來緩存當前的調色板主題程序集,緩存減少了將來應用程序運行時的加載時間。
上面的代碼示例為當前主題啟用了all available palettes ,要啟用并應用single palette則需要:
- 在項目中引用 NuGet包。
- 將調色板和基本主題傳遞給方法來創建新主題。
- 將 theme傳遞給方法。
- 將屬性設置為主題名稱。
C#:
var palettetheme = Theme.CreateTheme(PredefinedThemePalettes.RedWine, Theme.Office2019White); Theme.RegisterTheme(palettetheme); ApplicationThemeHelper.ApplicationThemeName = palettetheme.Name;
VB.NET:
Dim palettetheme = Theme.CreateTheme(PredefinedThemePalettes.RedWine, Theme.Office2019White) Theme.RegisterTheme(palettetheme) ApplicationThemeHelper.ApplicationThemeName = palettetheme.Name
將調色板應用到觸摸主題
- 將主題的調色板和非觸摸版本傳遞給ThemeCreateTheme方法。
- 將;Touch后綴附加到應用程序主題名稱并應用該主題。
下面的代碼示例將帶有TouchPalette的應用于應用程序:
C#:
var palette = new ThemePalette("TouchPalette"); var theme = Theme.CreateTheme(palette, Theme.Office2019Black); Theme.RegisterTheme(theme); ApplicationThemeHelper.ApplicationThemeName = theme.Name + ";Touch";
VB.NET:
Dim palette = New ThemePalette("TouchPalette") Dim theme = Theme.CreateTheme(palette, Theme.Office2019Black) Theme.RegisterTheme(theme) ApplicationThemeHelper.ApplicationThemeName = theme.Name & ";Touch"
在Ribbon Gallery顯示調色板
您可以在 Ribbon Gallery中顯示預定義的調色板來允許用戶選擇調色板并將其應用于當前主題:
1.引用 DevExpress.Mvvm.v23.1.dll程序集。
2.在應用程序啟動時調用ThemeRegisterPredefinedPaletteThemes方法來啟用這些調色板:
C#:
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { Theme.RegisterPredefinedPaletteThemes(); base.OnStartup(e); } }
VB.NET:
Public Partial Class App Inherits Application Protected Overrides Sub OnStartup(ByVal e As StartupEventArgs) Theme.RegisterPredefinedPaletteThemes() MyBase.OnStartup(e) End Sub End Class
3.將附加到一個RibbonGalleryBarItem上:
<dxr:RibbonGalleryBarItem ... > <dxmvvm:Interaction.Behaviors> <dxr:RibbonGalleryItemThemePaletteSelectorBehavior /> </dxmvvm:Interaction.Behaviors> </dxr:RibbonGalleryBarItem>
使用Windows強調色和應用模式
將Win10Palette對象作為參數傳遞給任何ThemeCreateTheme方法來生成基于Win10Dark或Win10Light DevExpress主題的主題,這個調色板允許您獲得以下Windows主題設置,監聽它們的變化,并將它們應用到應用程序中 :
- 強調色
- App模式(Dark/Light)[1]
Win10Palette適用于Windows 10及更高版本。
下面的代碼示例創建了一個基于Windows設置的顏色主題,并在啟動時將其應用于應用程序:
C#:
protected override void OnStartup(StartupEventArgs e) { var palette = new Win10Palette(true); var theme = Theme.CreateTheme(palette); Theme.RegisterTheme(theme); ApplicationThemeHelper.ApplicationThemeName = theme.Name; base.OnStartup(e); }
VB.NET:
Protected Overrides Sub OnStartup(ByVal e As StartupEventArgs) Dim palette = New Win10Palette() Dim theme = Theme.CreateTheme(palette) Theme.RegisterTheme(theme) ApplicationThemeHelper.ApplicationThemeName = theme.Name MyBase.OnStartup(e) End Sub
管理調色板設置
當創建Win10Palette實例時,您可以使用以下構造函數參數來管理調色板設置:
- accentColor
指定調色板強調色,如果調色板找不到Windows強調色,則應用程序的強調色設置為#FF0078D7。
- listenAccentColorChanges
指定是否獲取或忽略Windows強調色更改。
如果為true,當用戶在Windows中更改強調色時,Win10Palette執行以下操作:
- 獲取Windows強調色。
- 創建帶有強調色的主題。
- 將主題應用于應用程序。
如果為false, Win10Palette將忽略Windows強調色的變化。
- appMode
指定應用模式,如果調色板找不到Windows應用程序模式,則將應用程序應用程序模式設置為Light。
- listenAppModeChanges
指定是獲取還是忽略Windows應用程序模式更改。
如果為true,當用戶在Windows中更改強調色時,Win10Palette執行以下操作:
- 獲取Windows應用程序模式。
- 創建一個基于/的主題(取決于所選擇的Windows應用程序模式)。
- 將主題應用于應用程序。
如果為false, Win10Palette忽略Windows應用程序模式更改。
顯示Windows系統顏色主題
DevExpress WPF控件包括System Color主題,這個主題采用Windows app mode和accent color設置,將其應用到應用程序中,并在用戶更改這些操作系統設置時更新應用程序外觀,您可以在以下主題選擇器中顯示系統顏色主題:
要在主題選擇器中顯示Windows 10系統顏色主題,請將繼承的ShowWin10SystemColorTheme屬性設置為true。
自定義調色板
有關如何創建自定義主題調色板的詳細信息,請參閱以下WPF主題設計器幫助主題:編輯調色板顏色。
您可以通過以下方式導出調色板:
- 作為自定義主題
主題:。
- 作為一個類(.cs文件)
主題:。
- 在代碼中重復對調色板所做的更改
在代碼中編輯調色板
提示:當您切換主題時,應用程序不會卸載已加載的主題程序集。
請參閱以下幫助主題來獲取可用調色板顏色的完整列表:調色板顏色列表。
將自定義調色板應用于應用程序:
1.在項目中引用 NuGet包。
2.創建一個新的ThemePalette實例。
C#:
var custompalette = new ThemePalette("CustomPalette");
VB.NET:
Dim custompalette = New ThemePalette("CustomPalette")
或基于預定義的調色板創建新的ThemePalette實例,在這種情況下,新的調色板繼承預定義的調色板的顏色:
C#:
var custompalette = new ThemePalette("CustomPalette", PredefinedThemePalettes.RedWine);
VB.NET:
Dim custompalette = new ThemePalette("CustomPalette", PredefinedThemePalettes.RedWine)
3.使用方法來指定新的顏色:
C#:
custompalette.SetColor("Foreground", (Color)ColorConverter.ConvertFromString("#FFFF7200")); custompalette.SetColor("Backstage.Focused", Colors.White);
VB.NET:
custompalette.SetColor("Foreground", ColorConverter.ConvertFromString("#FF015C9F")) custompalette.SetColor("Foreground", Colors.White)
4.將調色板和一個支持調色板的主題傳遞給Theme.CreateTheme方法來創建一個新主題:
C#:
var customtheme = Theme.CreateTheme(custompalette, Theme.Office2016ColorfulSE);
VB.NET:
Dim customtheme = Theme.CreateTheme(custompalette, Theme.Office2016ColorfulSE)
5.將主題傳遞給Theme.RegisterTheme方法并設置ApplicationThemeHelper,ApplicationThemeName指定主題名稱用于將主題應用到應用程序:
C#:
Theme.RegisterTheme(customtheme); ApplicationThemeHelper.ApplicationThemeName = customtheme.Name;
VB.NET:
Theme.RegisterTheme(customtheme) ApplicationThemeHelper.ApplicationThemeName = customtheme.Name
完整的代碼示例:
C#:
var custompalette = new ThemePalette("CustomPalette"); custompalette.SetColor("Foreground", (Color)ColorConverter.ConvertFromString("#FFFF7200")); custompalette.SetColor("Backstage.Focused", Colors.White); var customtheme = Theme.CreateTheme(custompalette, Theme.Office2016ColorfulSE); Theme.RegisterTheme(customtheme); ApplicationThemeHelper.ApplicationThemeName = customtheme.Name;
VB.NET:
Dim custompalette = New ThemePalette("CustomPalette") custompalette.SetColor("Foreground", ColorConverter.ConvertFromString("#FF015C9F")) custompalette.SetColor("Backstage.Focused", Colors.White) Dim customtheme = Theme.CreateTheme(custompalette, Theme.Office2016ColorfulSE) Theme.RegisterTheme(customtheme) ApplicationThemeHelper.ApplicationThemeName = customtheme.Name
限制
在使用單文件部署的 .NET 5應用程序運行時更改主題。
必須將DevExpress WPF主題程序集提取到磁盤。當您發布一個 .NET 5用程序時(PublishSingleFile為true),在項目文件中設置IncludeAllContentForSelfExtract選項為true,這將允許用戶在運行時應用調色板。
<PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net5.0-windows</TargetFramework> <UseWPF>true</UseWPF> <Nullable>enable</Nullable> <PublishSingleFile>true</PublishSingleFile> <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> </PropertyGroup>