Skip to main content
All docs
V25.1
  • Bar

    DevExpress v25.1 Update — Your Feedback Matters

    Our What's New in v25.1 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

    Take the survey Not interested

    GalleryThemeSelectorBehavior Class

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

    Namespace: DevExpress.Xpf.Bars

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

    NuGet Package: DevExpress.Wpf.Core

    #Declaration

    [TargetType(typeof(Gallery))]
    public class GalleryThemeSelectorBehavior :
        ThemeSelectorBehavior<Gallery>

    #Remarks

    To use the GalleryThemeSelectorBehavior, attach it to a GalleryControl:

    <Window ...
        xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
        xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
        <Grid>
            <dxb:GalleryControl>
                <dxb:GalleryControl.Gallery>
                    <dxb:Gallery ColCount="3"
                                 IsGroupCaptionVisible="True"
                                 IsItemCaptionVisible="True"
                                 IsItemDescriptionVisible="True"     
                                 ItemAutoWidth="True">
                        <dxmvvm:Interaction.Behaviors>
                            <dxb:GalleryThemeSelectorBehavior />
                        </dxmvvm:Interaction.Behaviors>
                    </dxb:Gallery>
                </dxb:GalleryControl.Gallery>
            </dxb:GalleryControl>
        </Grid>
    </Window>
    

    DevExpress WPF Gallery Control | GalleryThemeSelectorBehavior

    View Example

    #Persist Theme Selection between Application Runs

    Use can save the application’s theme to the configuration file and restore it on 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();
    }        
    

    Call the static ApplicationThemeHelper.UpdateApplicationThemeName method to retrieve the theme name from the configuration file and apply it to your application:

    private void Application_Startup(object sender, ExitEventArgs e) {
        ApplicationThemeHelper.UpdateApplicationThemeName();
    }
    

    #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 GalleryThemeSelectorBehavior.

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

    <Window ...
        xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
        xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
        <Grid>
            <dxb:GalleryControl>
                <dxb:GalleryControl.Gallery>
                    <dxb:Gallery ColCount="3"
                                 IsGroupCaptionVisible="True"
                                 IsItemCaptionVisible="True"
                                 IsItemDescriptionVisible="True"     
                                 ItemAutoWidth="True">
                        <dxmvvm:Interaction.Behaviors>
                            <dxb:GalleryThemeSelectorBehavior/>
                        </dxmvvm:Interaction.Behaviors>
                    </dxb:Gallery>
                </dxb:GalleryControl.Gallery>
            </dxb:GalleryControl>
        </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;
            }
        }
    }
    

    #Hide Touch Themes in XAML

    Set the behavior’s inherited ShowTouchTheme property to false to hide touch themes from the GalleryThemeSelectorBehavior:

    <Window ...
        xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
        xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
        <Grid>
            <dxb:GalleryControl>
                <dxb:GalleryControl.Gallery>
                    <dxb:Gallery ColCount="3"
                                 IsGroupCaptionVisible="True"
                                 IsItemCaptionVisible="True"
                                 IsItemDescriptionVisible="True"     
                                 ItemAutoWidth="True">
                        <dxmvvm:Interaction.Behaviors>
                            <dxb:GalleryThemeSelectorBehavior ShowTouchThemes="False"/>
                        </dxmvvm:Interaction.Behaviors>
                    </dxb:Gallery>
                </dxb:GalleryControl.Gallery>
            </dxb:GalleryControl>
        </Grid>
    </Window>
    

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

    #Inheritance

    Object
    DispatcherObject
    DependencyObject
    Freezable
    Animatable
    DevExpress.Mvvm.UI.Interactivity.AttachableObjectBase
    DevExpress.Mvvm.UI.Interactivity.Behavior
    DevExpress.Mvvm.UI.Interactivity.Behavior<Gallery>
    DevExpress.Xpf.Bars.ThemeSelectorBehavior<Gallery>
    GalleryThemeSelectorBehavior
    See Also