调色板
调色板允许将颜色(例如,公司颜色)集成到应用程序中,并自定义主题中使用的颜色,您可以在此实例中创建自定义调色板或使用预定义的调色板。
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>