wpf-devexpress-dot-xpf-dot-windowsui-7b8992a7.md
Populates the associated HamburgerSubMenu with available themes and allows you to choose the application’s theme.
Namespace : DevExpress.Xpf.WindowsUI
Assembly : DevExpress.Xpf.Controls.v25.2.dll
NuGet Package : DevExpress.Wpf.Controls
[TargetType(typeof(HamburgerSubMenu))]
public class HamburgerSubMenuThemeSelectorBehavior :
ThemeSelectorBehavior<HamburgerSubMenu>
<TargetType(GetType(HamburgerSubMenu))>
Public Class HamburgerSubMenuThemeSelectorBehavior
Inherits ThemeSelectorBehavior(Of HamburgerSubMenu)
To use the HamburgerSubMenuThemeSelectorBehavior , attach it to a HamburgerSubMenu:
<Window ...
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<Grid>
<dxwui:HamburgerMenu>
<dxwui:HamburgerSubMenu>
<dxmvvm:Interaction.Behaviors>
<dxwui:HamburgerSubMenuThemeSelectorBehavior/>
</dxmvvm:Interaction.Behaviors>
</dxwui:HamburgerSubMenu>
</dxwui:HamburgerMenu>
</Grid>
</Window>
View Example: How to Implement a Theme Selector Based on a Hamburger SubMenu
You can pass a theme name to the PreviewThemeNames property to display themes in the HamburgerSubMenu preview. If you specify multiple themes, separate them with a comma.
The following code sample displays the VS2017Light VS2017Dark, Office2019White, and Office2019HighContrast themes in the HamburgerSubMenu preview:
<Window x:Class="HamburgerSubMenuThemeSelectorBehavior.MainWindow"
<!-- ... -->
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
<!-- ... -->
<Grid>
<dxwui:HamburgerMenu>
<dxwui:HamburgerSubMenu>
<dxmvvm:Interaction.Behaviors>
<dxwui:HamburgerSubMenuThemeSelectorBehavior ShowTouchThemes="False" PreviewThemeNames="VS2017Light,VS2017Dark,Office2019White,Office2019HighContrast"/>
</dxmvvm:Interaction.Behaviors>
</dxwui:HamburgerSubMenu>
</dxwui:HamburgerMenu>
</Grid>
</Window>
You can save the application’s theme to the configuration file and restore it in the next application run.
To save an applied theme, use the static ApplicationThemeHelper.SaveApplicationThemeName method to save the theme name specified in the static ApplicationThemeHelper.ApplicationThemeName property:
private void Application_Exit(object sender, StartupEventArgs e) {
ApplicationThemeHelper.SaveApplicationThemeName();
}
Private Sub Application_Exit(ByVal sender As Object, ByVal e As StartupEventArgs)
ApplicationThemeHelper.SaveApplicationThemeName()
End Sub
Call the static ApplicationThemeHelper.UpdateApplicationThemeName method to retrieve the theme name from the configuration file.
private void Application_Startup(object sender, ExitEventArgs e) {
ApplicationThemeHelper.UpdateApplicationThemeName();
}
Private Sub Application_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
ApplicationThemeHelper.UpdateApplicationThemeName()
End Sub
You can set the inherited ShowWin10SystemColorTheme property to true to display the Windows 10 System Colors theme in the theme selector. This theme takes the Windows app mode and accent color settings, applies it to your application, and updates your app appearance when a user changes these OS settings.
Refer to the following topic for more information: Use Windows Accent Color and App Mode.
You can use the Theme.ShowInThemeSelector property to hide a theme/theme category from the HamburgerSubMenuThemeSelectorBehavior ‘s theme gallery.
The following code sample hides Office2007 and Metropolis theme categories, and the DeepBlue application theme:
<Window ...
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<Grid>
<dxwui:HamburgerMenu>
<dxwui:HamburgerSubMenu>
<dxmvvm:Interaction.Behaviors>
<dxwui:HamburgerSubMenuThemeSelectorBehavior/>
</dxmvvm:Interaction.Behaviors>
</dxwui:HamburgerSubMenu>
</dxwui:HamburgerMenu>
</Grid>
</Window>
using DevExpress.Xpf.Core;
public partial class App : Application {
public App() {
foreach (Theme theme in Theme.Themes.ToList()) {
if (theme.Category == Theme.Office2007Category ||
theme.Category == Theme.MetropolisCategory ||
theme.Name == "DeepBlue") theme.ShowInThemeSelector = false;
}
}
}
Imports DevExpress.Xpf.Core
Public Partial Class App
Inherits Application
Public Sub New()
For Each theme As Theme In Theme.Themes.ToList()
If theme.Category = Theme.Office2007Category OrElse theme.Category = Theme.MetropolisCategory OrElse theme.Name = "DeepBlue" Then theme.ShowInThemeSelector = False
Next
End Sub
End Class
Set the behavior’s inherited ShowTouchThemes property to false to hide touch themes from the HamburgerSubMenuThemeSelectorBehavior ‘s theme gallery:
<Window ...
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<Grid>
<dxwui:HamburgerMenu>
<dxwui:HamburgerSubMenu>
<dxmvvm:Interaction.Behaviors>
<dxwui:HamburgerSubMenuThemeSelectorBehavior ShowTouchThemes="False"/>
</dxmvvm:Interaction.Behaviors>
</dxwui:HamburgerSubMenu>
</dxwui:HamburgerMenu>
</Grid>
</Window>
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the HamburgerSubMenuThemeSelectorBehavior class.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.
<dxmvvm:Interaction.Behaviors>
<dxwui:HamburgerSubMenuThemeSelectorBehavior ShowTouchThemes="False" PreviewThemeNames="VS2017Light,VS2017Dark,Office2019White,Office2019HighContrast"/>
</dxmvvm:Interaction.Behaviors>
Object DispatcherObject DependencyObject Freezable Animatable DevExpress.Mvvm.UI.Interactivity.AttachableObjectBase DevExpress.Mvvm.UI.Interactivity.Behavior DevExpress.Mvvm.UI.Interactivity.Behavior<HamburgerSubMenu> DevExpress.Xpf.Bars.ThemeSelectorBehavior<HamburgerSubMenu> HamburgerSubMenuThemeSelectorBehavior
See Also
BarSubItemThemeSelectorBehavior
BarSplitItemThemeSelectorBehavior
RibbonGalleryItemThemeSelectorBehavior
RibbonGalleryItemThemePaletteSelectorBehavior