Back to Devexpress

BarSplitItemThemeSelectorBehavior Class

wpf-devexpress-dot-xpf-dot-bars-4a5bfe12.md

latest10.2 KB
Original Source

BarSplitItemThemeSelectorBehavior Class

Populates the associated BarSplitButtonItem with available themes and allows you to choose the application’s theme.

Namespace : DevExpress.Xpf.Bars

Assembly : DevExpress.Xpf.Core.v25.2.dll

NuGet Package : DevExpress.Wpf.Core

Declaration

csharp
[TargetType(typeof(BarSplitButtonItem))]
public class BarSplitItemThemeSelectorBehavior :
    GalleryBarItemThemeSelectorBehavior<BarSplitButtonItem>
vb
<TargetType(GetType(BarSplitButtonItem))>
Public Class BarSplitItemThemeSelectorBehavior
    Inherits GalleryBarItemThemeSelectorBehavior(Of BarSplitButtonItem)

Remarks

To use the BarSplitItemThemeSelectorBehavior , attach it to a BarSplitButtonItem in a RibbonControl.

xaml
<Window ...
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
    <StackPanel>
        <dxb:ToolBarControl>
            <dxb:BarSplitButtonItem>
                <dxmvvm:Interaction.Behaviors>
                    <dxb:BarSplitItemThemeSelectorBehavior />
                </dxmvvm:Interaction.Behaviors>
            </dxb:BarSplitButtonItem>
        </dxb:ToolBarControl>
      </StackPanel>
</Window>

View Example

Persist Theme Selection between Application Runs

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:

csharp
private void Application_Exit(object sender, StartupEventArgs e) {
    ApplicationThemeHelper.SaveApplicationThemeName();
}
vb
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 and apply it to your application:

csharp
private void Application_Startup(object sender, ExitEventArgs e) {
    ApplicationThemeHelper.UpdateApplicationThemeName();
}
vb
Private Sub Application_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
    ApplicationThemeHelper.UpdateApplicationThemeName()
End Sub

Display Windows System Color Theme

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.

Hide Themes from Theme Selector

You can use the Theme.ShowInThemeSelector property to hide a theme/theme category from the BarSplitItemThemeSelectorBehavior ‘s theme gallery.

The following code sample hides the Office2007 and Metropolis theme categories, and the DeepBlue application theme:

xaml
<Window ...
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
    <StackPanel>
        <dxb:ToolBarControl>
            <dxb:BarSplitButtonItem>
                <dxmvvm:Interaction.Behaviors>
                    <dxb:BarSplitItemThemeSelectorBehavior/>
                </dxmvvm:Interaction.Behaviors>
            </dxb:BarSplitButtonItem>
        </dxb:ToolBarControl>
    </StackPanel>
</Window>
csharp
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;
        }
    }
}
vb
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

Hide Touch Themes in XAML

Set the behavior’s inherited ShowTouchThemes property to false to hide touch themes from the BarSubItemThemeSelectorBehavior ‘s theme gallery:

xaml
<Window ...
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
    <StackPanel>
        <dxb:ToolBarControl>
            <dxb:BarSplitButtonItem>
                <dxmvvm:Interaction.Behaviors>
                    <dxb:BarSplitItemThemeSelectorBehavior ShowTouchThemes="False" />
                </dxmvvm:Interaction.Behaviors>
            </dxb:BarSplitButtonItem>
        </dxb:ToolBarControl>
    </StackPanel>
</Window>

Display an Applied Theme’s Icon

Set the ShowSelectedThemeGlyph property to true to display the applied theme’s icon in the BarSplitItemThemeSelectorBehavior ‘s bar item:

xaml
<Window ...
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
    <StackPanel>
        <dxb:ToolBarControl>
            <dxb:BarSplitButtonItem>
                <dxmvvm:Interaction.Behaviors>
                    <dxb:BarSplitItemThemeSelectorBehavior ShowSelectedThemeGlyph="True" />
                </dxmvvm:Interaction.Behaviors>
            </dxb:BarSplitButtonItem>
        </dxb:ToolBarControl>
    </StackPanel>
</Window>

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the BarSplitItemThemeSelectorBehavior 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.

wpf-mvvm-behaviors-barItems-based-theme-selectors/CS/WpfApplication1/MainWindow.xaml#L44

xml
<dxmvvm:Interaction.Behaviors>
    <dxb:BarSplitItemThemeSelectorBehavior />
</dxmvvm:Interaction.Behaviors>

Inheritance

Show 12 items

Object DispatcherObject DependencyObject Freezable Animatable DevExpress.Mvvm.UI.Interactivity.AttachableObjectBase DevExpress.Mvvm.UI.Interactivity.Behavior DevExpress.Mvvm.UI.Interactivity.Behavior<BarSplitButtonItem> DevExpress.Xpf.Bars.ThemeSelectorBehavior<BarSplitButtonItem> DevExpress.Xpf.Bars.BarItemThemeSelectorBehavior<BarSplitButtonItem> DevExpress.Xpf.Bars.GalleryBarItemThemeSelectorBehavior<BarSplitButtonItem> BarSplitItemThemeSelectorBehavior

See Also

Behaviors

BarSubItemThemeSelectorBehavior

GalleryThemeSelectorBehavior

RibbonGalleryItemThemeSelectorBehavior

HamburgerSubMenuThemeSelectorBehavior

RibbonGalleryItemThemePaletteSelectorBehavior

BarSplitItemThemeSelectorBehavior Members

DevExpress.Xpf.Bars Namespace