Coder Social home page Coder Social logo

fluent-xaml-theme-editor's Introduction

page_type name languages products description
sample
Fluent Xaml Theme Editor
csharp
xaml
windows
windows-uwp
A tool and sample app that shows you how to theme your app effortlessly. Jumpstarting this by also giving you lightweight toolability to see your custom theme come to life in your app.

Fluent XAML Theme Editor

using component overrides

This repo contains the full solution and source code to the Fluent XAML Theme Editor - a tool that helps demonstrate the flexibility of the Fluent Design System as well as supports the app development process by generating XAML markup for our ResourceDictionary framework used in Universal Windows Platform (UWP) applications.

The source code located in this repo was created with the Universal Windows Platform available in Visual Studio and is designed to run on desktop, mobile and future devices that support the Universal Windows Platform.

Note: If you are unfamiliar with XAML, the Universal Windows Platform, Fluent Design or resources and ResourceDictionaries, it is highly recommended that you visit the Design Universal Windows Platform site and familiarize yourself with the language and framework that this tool is intended for.

Universal Windows Platform development

This application requires Visual Studio 2017 Update 4 or higher and the Windows Software Development Kit (SDK) version 17763 or higher for Windows 10.

Get a free copy of Visual Studio 2017 Community Edition with support for building Universal Windows Platform apps

Additionally, to stay on top of the latest updates to Windows and the development tools, become a Windows Insider by joining the Windows Insider Program.

Become a Windows Insider

Store version of tool

If you're not looking to be apart of this open source project and instead would just like to use the app itself, please to go the Microsoft Store version of this tool and download it there.

How to use the tool

With the preview build, you can select three major colors for both the Light and Dark themes in the right-hand properties view labeled “Color Dictionary”.

color properties window

  • Region – The background that all the controls sit on, which is a separate resource that does not exist in our framework.
  • Base – Represents all our controls’ backplates and their temporary state visuals like hover or press. In general, Base should be in contrast with the background (or Region color) of your theme and with black text (if in Light theme) and white text (if in Dark theme).
  • Primary – This is essentially the Accent color and should contrast with mainly white text. It is also used in more choice locations to show alternate rest states for toggled controls like list selection, checkbox or radiobutton checked states, slider fill values, and other control parts that need to be shown as different from their default rest state once interacted with.

Refining the colors

In addition to the three major colors for each theme, you can also expand any one of the major colors to see a list of minor colors that change the look of only certain control parts - this basically allows you to get more detailed with your color choices for states.

color properties window details

To access the detailed view of colors, simply click the chevron next to the major color button swatches.

Creating, saving and loading presets

The editor will ship with some presets for you to look at to get an idea of what a theme looks like in the app. The preset dropdown is located at the top of the Color Dictionary properties panel.

When you first boot up it will always be set to Default – which is the Light and Dark theme styling default for all our controls. You can select different themes like Lavender and Nighttime to get an idea of how the tool will theme our controls.

Once you’re ready to start making your own theme, just start editing the colors! Once you’ve started tweaking them, you’ll notice that the Presets ComboBox goes from the name of the preset to “Custom”:

This means that you’ve started a new temporary theme that’s “Custom.” Any changes you make will not affect any of the other Presets in that box.

  • Once you’re satisfied with the changes you’ve made, simply click the “Save” button and browse to your desired save point.
  • Similarly, you can open your saved JSON theme by clicking the “Load” button and browsing to your saved theme’s file location.

Checking contrast ratio

The last part of the theme editor is probably one of the most important parts of creating your theme, and that is to make sure that in either respective theme you are contrast compliant. The tool provides you with a small list of contrast information on the left-hand side of the color selection window when choosing your color.

contrast panel example

In this window you can see your contrast with the most prevalent text color in the theme that you’re choosing to edit, in the above case black text because you are editing a Light theme color value.

When you pick a color that falls below the standard contrast ratio of 4.5:1, you’ll be alerted with red text next to your contrast value.

contrast panel bad example

You can learn more about contrast ratios and their importance here.

Exporting and using your theme in a UWP app

Once you’ve themed everything, you’ll want to use it in your app! To do that you’ll need to click the “Export” button at the bottom of the Color Dictionary properties panel.

export theme

That button will open a popup window with a generic, unnamed ResourceDictionary stub (seen below).

export theme popup

This window doesn’t make anything final, however, if you want to make some changes to the theme and re-export them to the Export window, it will refresh with your changed color values.

However, once you’re ready to use it in your app, click the “Copy to Clipboard” button in the lower right corner and go to UWP Visual Studio solution.

Once in Visual Studio, right-click on the project solution, located in the Solution Explorer.

creating resource dictionary Visual Studio

And go to Add > New Item and then choose Resource Dictionary.

creating resource dictionary Visual Studio

Name that dictionary whatever makes sense to you and click Add when you’re done.

creating resource dictionary Visual Studio

That should generate a blank ResourceDictionary like this:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyAppName">
    
</ResourceDictionary>

Now you can paste the exported theme code from the editor into that ResourceDictionary.

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyAppName">
    
    <!-- Free Public License 1.0.0 Permission to use, copy, modify, and/or distribute this code for any purpose with or without fee is hereby granted. -->
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <ResourceDictionary.MergedDictionaries>
                <ColorPaletteResources Accent="#FF0073CF" AltHigh="#FF000000" AltLow="#FF000000" AltMedium="#FF000000" AltMediumHigh="#FF000000" AltMediumLow="#FF000000" BaseHigh="#FFFFFFFF" BaseLow="#FF333333" BaseMedium="#FF9A9A9A" BaseMediumHigh="#FFB4B4B4" BaseMediumLow="#FF676767" ChromeAltLow="#FFB4B4B4" ChromeBlackHigh="#FF000000" ChromeBlackLow="#FFB4B4B4" ChromeBlackMedium="#FF000000" ChromeBlackMediumLow="#FF000000" ChromeDisabledHigh="#FF333333" ChromeDisabledLow="#FF9A9A9A" ChromeGray="#FF808080" ChromeHigh="#FF808080" ChromeLow="#FF151515" ChromeMedium="#FF1D1D1D" ChromeMediumLow="#FF2C2C2C" ChromeWhite="#FFFFFFFF" ListLow="#FF1D1D1D" ListMedium="#FF333333" />
                <ResourceDictionary>
                    <Color x:Key="SystemChromeAltMediumHighColor">#CC000000</Color>
                    <Color x:Key="SystemChromeAltHighColor">#FF000000</Color>
                    <Color x:Key="SystemRevealListLowColor">#FF1D1D1D</Color>
                    <Color x:Key="SystemRevealListMediumColor">#FF333333</Color>
                    <Color x:Key="RegionColor">#FF000000</Color>
                    <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
        <ResourceDictionary x:Key="Light">
            <ResourceDictionary.MergedDictionaries>
                <ColorPaletteResources Accent="#FF0073CF" AltHigh="#FFFFFFFF" AltLow="#FFFFFFFF" AltMedium="#FFFFFFFF" AltMediumHigh="#FFFFFFFF" AltMediumLow="#FFFFFFFF" BaseHigh="#FF000000" BaseLow="#FFCCCCCC" BaseMedium="#FF898989" BaseMediumHigh="#FF5D5D5D" BaseMediumLow="#FF737373" ChromeAltLow="#FF5D5D5D" ChromeBlackHigh="#FF000000" ChromeBlackLow="#FFCCCCCC" ChromeBlackMedium="#FF5D5D5D" ChromeBlackMediumLow="#FF898989" ChromeDisabledHigh="#FFCCCCCC" ChromeDisabledLow="#FF898989" ChromeGray="#FF737373" ChromeHigh="#FFCCCCCC" ChromeLow="#FFECECEC" ChromeMedium="#FFE6E6E6" ChromeMediumLow="#FFECECEC" ChromeWhite="#FFFFFFFF" ListLow="#FFE6E6E6" ListMedium="#FFCCCCCC" />
                <ResourceDictionary>
                    <Color x:Key="SystemChromeAltMediumHighColor">#CCFFFFFF</Color>
                    <Color x:Key="SystemChromeAltHighColor">#FFFFFFFF</Color>
                    <Color x:Key="SystemRevealListLowColor">#FFE6E6E6</Color>
                    <Color x:Key="SystemRevealListMediumColor">#FFCCCCCC</Color>
                    <RevealBackgroundBrush x:Key="SystemControlHighlightListLowRevealBackgroundBrush" TargetTheme="Light" Color="{ThemeResource SystemRevealListMediumColor}" FallbackColor="{ StaticResource SystemListMediumColor}" />
                    <Color x:Key="RegionColor">#FFFFFFFF</Color>
                    <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
        <ResourceDictionary x:Key="HighContrast">
            <StaticResource x:Key="RegionColor" ResourceKey="SystemColorWindowColor" />
            <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
    
</ResourceDictionary>

Now you have a fully customized color theme waiting to be use, so let’s apply it!

To do that, you’ll want to go into your page or app.xaml (depending on how much of your app you want the theme to apply to) and merge your theme dictionary into the resources of that page or app.

<Page.Resources>
   <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
         <ResourceDictionary Source="PurpleGreenTheme.xaml"/>
      </ResourceDictionary.MergedDictionaries>
   </ResourceDictionary>
</Page.Resources>

Lastly, don’t forget to set the background color of your page to the RegionColor that you picked for your theme. It’s the only brush that won’t get set automatically.

<Grid Background="{ThemeResource RegionBrush}">
   <!-- Your page layout/content here -->
</Grid>

Once that’s in, you’re done! Your theme colors will now be pervasive across your app or page depending.

Using ColorPaletteResources in code-behind

To access the ColorPaletteResources API in code behind, and to change any of the color properties at runtime, loop through the merged dictionaries in app.xaml (or at the scope that you merged your themes) and grab a reference to the currently used ResourceDictionary as a ColorPaletteResource instance

Here's an example of how to grab and edit the properties on ColorPaletteResources in C#:

public MainPage()
{
    this.InitializeComponent();

    ColorPaletteResources cpr = FindColorPaletteResourcesForTheme("Light");
    cpr.Accent = Colors.Red;

    ReloadPageTheme(this.RequestedTheme);
}

private void ReloadPageTheme(ElementTheme startTheme)
{
    if (this.RequestedTheme == ElementTheme.Dark)
        this.RequestedTheme = ElementTheme.Light;
    else if (this.RequestedTheme == ElementTheme.Light)
        this.RequestedTheme = ElementTheme.Default;
    else if (this.RequestedTheme == ElementTheme.Default)
        this.RequestedTheme = ElementTheme.Dark;

    if (this.RequestedTheme != startTheme)
        ReloadPageTheme(startTheme);
}

private ColorPaletteResources FindColorPaletteResourcesForTheme(string theme)
{
    foreach (var themeDictionary in Application.Current.Resources.ThemeDictionaries)
    {
        if (themeDictionary.Key.ToString() == theme)
        {
            if (themeDictionary.Value is ColorPaletteResources)
            {
                return themeDictionary.Value as ColorPaletteResources;
            }
            else if (themeDictionary.Value is ResourceDictionary targetDictionary)
            {
                foreach (var mergedDictionary in targetDictionary.MergedDictionaries)
                {
                    if (mergedDictionary is ColorPaletteResources)
                    {
                        return mergedDictionary as ColorPaletteResources;
                    }
                }
            }
        }
    }
    return null;
}

We don't recommend doing this too often at runtime as you could experience some performance issues, but if placed in a Settings page or areas where you don't expect users to toggle it often, the performance shouldn't be too bad.

Tip! You need to reload a ResourceDictionary in order for the resources within to get any new color changes you've applied. You can do so by flipping the RequestedTheme to a different theme and back again. That is what the ReloadPageTheme function is doing.

Theming for Downlevel

Although the API used in the exported code for this tool is for version 17744 or greater, it's not too complicated to get your theme to work on earlier SDK versions.

When you export your theme, you'll see a ResourceDictionary markup with a ColorPaletteResources definition similar to this:

<ResourceDictionary.ThemeDictionaries>
    <ResourceDictionary x:Key="Default">
        <ResourceDictionary.MergedDictionaries>
            <ColorPaletteResources Accent="#FF8961CC" AltHigh="#FF000000" AltLow="#FF000000" AltMedium="#FF000000" AltMediumHigh="#FF000000" AltMediumLow="#FF000000" BaseHigh="#FFFFFFFF" BaseLow="#FF64576B" BaseMedium="#FFB6AABC" BaseMediumHigh="#FFCBBFD0" BaseMediumLow="#FF8D8193" ChromeAltLow="#FFCBBFD0" ChromeBlackHigh="#FF000000" ChromeBlackLow="#FFCBBFD0" ChromeBlackMedium="#FF000000" ChromeBlackMediumLow="#FF000000" ChromeDisabledHigh="#FF64576B" ChromeDisabledLow="#FFB6AABC" ChromeGray="#FFA295A8" ChromeHigh="#FFA295A8" ChromeLow="#FF332041" ChromeMedium="#FF3F2E4B" ChromeMediumLow="#FF584960" ChromeWhite="#FFFFFFFF" ListLow="#FF3F2E4B" ListMedium="#FF64576B" />
        <ResourceDictionary>
            <Color x:Key="RegionColor">#FF262738</Color>
            <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

ColorPaletteResources is a friendly API for our SystemColors that sit within generic.xaml and allows for those SystemColors to be scoped at any level.

If you wanted to enable this same theme to work downlevel, you would have to define each SystemColor individually with each color from your theme:

<ResourceDictionary>
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <Color x:Key="SystemAltHighColor">#FF000000</Color>
            <Color x:Key="SystemAltLowColor">#FF000000</Color>
            <Color x:Key="SystemAltMediumColor">#FF000000</Color>
            <Color x:Key="SystemAltMediumHighColor">#FF000000</Color>
            <Color x:Key="SystemAltMediumLowColor">#FF000000</Color>
            <Color x:Key="SystemBaseHighColor">#FFFFFFFF</Color>
            <Color x:Key="SystemBaseLowColor">#FF64576B</Color>
            <Color x:Key="SystemBaseMediumColor">#FFB6AABC</Color>
            <Color x:Key="SystemBaseMediumHighColor">#FFCBBFD0</Color>
            <Color x:Key="SystemBaseMediumLowColor">#FF8D8193</Color>
            <Color x:Key="SystemChromeAltLowColor">#FFCBBFD0</Color>
            <Color x:Key="SystemChromeBlackHighColor">#FF000000</Color>
            <Color x:Key="SystemChromeBlackLowColor">#FFCBBFD0</Color>
            <Color x:Key="SystemChromeBlackMediumLowColor">#FF000000</Color>
            <Color x:Key="SystemChromeBlackMediumColor">#FF000000</Color>
            <Color x:Key="SystemChromeDisabledHighColor">#FF64576B</Color>
            <Color x:Key="SystemChromeDisabledLowColor">#FFB6AABC</Color>
            <Color x:Key="SystemChromeHighColor">#FFA295A8</Color>
            <Color x:Key="SystemChromeLowColor">#FF332041</Color>
            <Color x:Key="SystemChromeMediumColor">#FF3F2E4B</Color>
            <Color x:Key="SystemChromeMediumLowColor">#FF584960</Color>
            <Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
            <Color x:Key="SystemChromeGrayColor">#FFA295A8</Color>
            <Color x:Key="SystemListLowColor">#FF3F2E4B</Color>
            <Color x:Key="SystemListMediumColor">#FF64576B</Color>                
            <Color x:Key="SystemAccentColor">#FF8961CC</Color>
            
            <Color x:Key="RegionColor">#FF262738</Color>
            <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}"/>
         </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

In this case we're using the Lavendar theme to show this downlevel transition.

Warning: Although this markup format change will enable your theme to be applied across controls in earlier SDK versions, it will not work on a page, container or control scoped level. ColorPaletteResources is the API that allows scoping behavior. This markup format will only work at the app.xaml level for earlier SDKs.

Contributions

This tool was created directly from the feature team and although we welcome your input and suggestions for improvements to the tool, we are not accepting any features or changes from the public at this time. Please check back regularly as we may evolve our contribution model in the future.

This project has adopted the Microsoft Open Source Code of Conduct. For more information, see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

See also

For additional Windows source code, tools and samples, please see Windows on GitHub.

fluent-xaml-theme-editor's People

Contributors

dersei avatar eigenvector32 avatar hansmbakker avatar jorge-andre avatar kikisaints avatar microsoft-github-policy-service[bot] avatar mterhorst avatar sonnemaf avatar vittoboa avatar yohskdista avatar zaevi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fluent-xaml-theme-editor's Issues

Does not start properly

Cannot start at all

“DesignLab.exe”(Win32): 已加载“C:\Users\Shomn\source\repos\fluent-xaml-theme-editor\FluentEditor\bin\x64\Debug\AppX\DesignLab.exe”。
“DesignLab.exe”(Win32): 已加载“C:\Windows\System32\ntdll.dll”。
“DesignLab.exe”(Win32): 已加载“C:\Windows\System32\kernel32.dll”。
“DesignLab.exe”(Win32): 已加载“C:\Windows\System32\KernelBase.dll”。
“DesignLab.exe”(Win32): 已加载“C:\Windows\System32\ucrtbase.dll”。
线程 0x5f4 已退出,返回值为 3221225781 (0xc0000135)。
线程 0x17d0 已退出,返回值为 3221225781 (0xc0000135)。
程序“[11936] DesignLab.exe”已退出,返回值为 3221225781 (0xc0000135) '未找到依赖 dll'。

"DesignLab.exe" (Win32): "C:\Users\Shomn\source\repos\fluent-xaml-theme-editor\FluentEditor\bin\x64\Debug\AppX\DesignLab.exe" loaded.
"DesignLab.exe" (Win32): "C:\Windows\System32\ntdll.dll" loaded.
"DesignLab.exe" (Win32): "C:\Windows\System32\kernel32.dll" loaded.
"DesignLab.exe" (Win32): "C:\Windows\System32\KernelBase.dll" loaded.
"DesignLab.exe" (Win32): "C:\Windows\System32\ucrtbase.dll" loaded.
Thread 0x5f4 has exited with a return value of 3221225781 (0xc0000135).
Thread 0x17d0 has exited with a return value of 3221225781 (0xc0000135).
Program '[11936] DesignLab.exe' exited with return value 3221225781 (0xc0000135) 'The dependent dll was not found'.

image
Native debugging without any valuable information.

make RegionColor automatic

Lastly, don’t forget to set the background color of your page to the RegionColor that you picked for your theme. It’s the only brush that won’t get set automatically.

above statement in ReadMe, clearly indicates that RegionColor and I guess also RegionBrush are 2 resource which do not automatically applied to the app, which makes sense because these 2 names are not in SystemResources, I wanted to ask can this be fixed? I mean can the name be swapped with a resource name which i automatically applied from ThemeResource ? or more specifically what is the reason of this particular issue that this resource is named in such a way that it has to be manually applied?

Bring this functionality to Blend

The Fluent XAML Theme Editor is clearly a tool to design user interfaces.
That's why I think that its functionality should be in the tool made for designers: Blend.

Yes, I'm aware that this issue is not directly releated to the Fluent XAML Theme Editor, but I think you should talk to the Blend team to figure out how to integrate this great and fantastic functionality of this tool into Blend.

As the Solution/Project is known in Blend, there are even more scenarios possible. Instead of copying/pasting ResourceDictionaries, Blend could create those files and elements directly in the opened project. Another idea is that Blend could show the changes for example live, if you're using XAML Edit/Continue.

Thanks,
Thomas

NavigationView ( winui ) items not getting the hover color

Just tried and exported the preset Forest theme into my app, and noticed that there is no hover effect, ( when I hover on the navigationviewitem there is no effect or color change whatsoever. Also same problem occurs with the back button of the NavigationView, but the menu toggle button gets the hover color change as expected.

In this image my pointer is actually on Library and you can see that library and home basically have same color.

2018-10-16 2

When color theme is used, ContentDialog covers the whole page

Steps to replicate:

  1. Create new UWP app
  2. Grab a color scheme from Fluent XAML Theme Editor and add it to your project
  3. In App.Xaml add this:
     <Application.Resources>
      <ResourceDictionary>
       <ResourceDictionary.MergedDictionaries>
           <ResourceDictionary Source="Dictionary1.xaml"/>
      </ResourceDictionary.MergedDictionaries>
     </ResourceDictionary>
    </Application.Resources>
  1. Add a TextBlock and Loaded event to MainPage
  2. Add ContentDialog call to Loaded event
   private async void Page_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            ContentDialog noWifiDialog = new ContentDialog
            {
                Title = "No wifi connection",
                Content = "Check your connection and try again.",
                CloseButtonText = "Ok"
            };

            _ = await noWifiDialog.ShowAsync();
        }
  1. Run the app and see how ContentDialog covers up the TextBlock. If you remove the color theme this does not happen.

Fluent for WPF

Do you have any plans to produce WPF Xaml styles to for WPF apps?

All Alt colors are the same

Below are the generated Alt colors for the dark theme using the default pallete.

<BelowWindows10version1809:Color x:Key="SystemAltHighColor">#FF000000</BelowWindows10version1809:Color>
<BelowWindows10version1809:Color x:Key="SystemAltLowColor">#FF000000</BelowWindows10version1809:Color>
<BelowWindows10version1809:Color x:Key="SystemAltMediumColor">#FF000000</BelowWindows10version1809:Color>
<BelowWindows10version1809:Color x:Key="SystemAltMediumHighColor">#FF000000</BelowWindows10version1809:Color>
<BelowWindows10version1809:Color x:Key="SystemAltMediumLowColor">#FF000000</BelowWindows10version1809:Color>

Description for colors

It would be helpful to have a description for the color headings (Region, Base, Primary) to better explain their function. A "more information" button could be an example.

Add Acrylic material in the sample app

In order to show the developers how they can use acrylic with their custom themes and how exactly it will look like I suggest that there must be some sample controls on the sample app on both the light and dark sides which show the acrylic according to the theme selected. This will include both the window and the element acrylic ( hos acrylic and in-app acrylic ) and will also include multiple opacity's as shown in official docs of acrylic.

May I also suggest some comments on the exported resources, so that each color/resource can have a comment explaining the purpose of that specific resource, and in case of RegionColor, a commend can explain why exactly it needs to be manually applied, and where and in what cases it is needed

Color picker breaks when using certain system scaling percentages.

The color picker(s) behave very erratically / incorrectly when system scaling is set to 125%, 175%, 225%, and probably some other uneven values.

The WinUI color picker doesn't exhibit this behavior in the XAML Controls Gallery, so I'm not sure if the issue is related to it being housed in a popup / flyout / overlay or something else.

Is this app abandoned?

The last update of this repo is 2 years ago. The bug of i18n which makes this app cannot launch still remain, but it should be a bug with the highest priority that will be fixed immediately after it was found. Issues here remain no assignees. The pull request which was made in 2020 still haven't been merged or blocked. Even in Microsoft Store it has a logo with low contrast ratio and cannot be seen at all.

But all apps like XAML Controls Gallery are still recommending this app. I don't know why.

Dark/Light Accent colors not working?

Accent Color is working, but Dark/Light Accent colors not working. it still seems to follow Windows.

<StackPanel Padding="32">
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorLight3}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorLight2}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorLight1}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColor}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorDark1}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorDark2}"/>
    <Rectangle Width="100" Height="100" Fill="{ThemeResource SystemAccentColorDark3}"/>
</StackPanel>

image

<ResourceDictionary.ThemeDictionaries>
    <ResourceDictionary x:Key="Default">
        <ResourceDictionary.MergedDictionaries>
            <ColorPaletteResources Accent="#FF22D7BB" AltHigh="#FF000000" AltLow="#FF000000" AltMedium="#FF000000" AltMediumHigh="#FF000000" AltMediumLow="#FF000000" BaseHigh="#FFFFFFFF" BaseLow="#FF333333" BaseMedium="#FF9A9A9A" BaseMediumHigh="#FFB4B4B4" BaseMediumLow="#FF676767" ChromeAltLow="#FFB4B4B4" ChromeBlackHigh="#FF000000" ChromeBlackLow="#FFB4B4B4" ChromeBlackMedium="#FF000000" ChromeBlackMediumLow="#FF000000" ChromeDisabledHigh="#FF333333" ChromeDisabledLow="#FF9A9A9A" ChromeGray="#FF808080" ChromeHigh="#FF808080" ChromeLow="#FF151515" ChromeMedium="#FF1D1D1D" ChromeMediumLow="#FF2C2C2C" ChromeWhite="#FFFFFFFF" ListLow="#FF1D1D1D" ListMedium="#FF333333" />
            <ResourceDictionary>
                <Color x:Key="SystemChromeAltMediumHighColor">#CC000000</Color>
                <Color x:Key="SystemChromeAltHighColor">#FF000000</Color>
                <Color x:Key="SystemRevealListLowColor">#FF1D1D1D</Color>
                <Color x:Key="SystemRevealListMediumColor">#FF333333</Color>
                <Color x:Key="RegionColor">#FF000000</Color>
                <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    <ResourceDictionary x:Key="Light">
        <ResourceDictionary.MergedDictionaries>
            <ColorPaletteResources Accent="#FF22D7BB" AltHigh="#FFFFFFFF" AltLow="#FFFFFFFF" AltMedium="#FFFFFFFF" AltMediumHigh="#FFFFFFFF" AltMediumLow="#FFFFFFFF" BaseHigh="#FF000000" BaseLow="#FFCCCCCC" BaseMedium="#FF898989" BaseMediumHigh="#FF5D5D5D" BaseMediumLow="#FF737373" ChromeAltLow="#FF5D5D5D" ChromeBlackHigh="#FF000000" ChromeBlackLow="#FFCCCCCC" ChromeBlackMedium="#FF5D5D5D" ChromeBlackMediumLow="#FF898989" ChromeDisabledHigh="#FFCCCCCC" ChromeDisabledLow="#FF898989" ChromeGray="#FF737373" ChromeHigh="#FFCCCCCC" ChromeLow="#FFECECEC" ChromeMedium="#FFE6E6E6" ChromeMediumLow="#FFECECEC" ChromeWhite="#FFFFFFFF" ListLow="#FFE6E6E6" ListMedium="#FFCCCCCC" />
            <ResourceDictionary>
                <Color x:Key="SystemChromeAltMediumHighColor">#CCFFFFFF</Color>
                <Color x:Key="SystemChromeAltHighColor">#FFFFFFFF</Color>
                <Color x:Key="SystemRevealListLowColor">#FFE6E6E6</Color>
                <Color x:Key="SystemRevealListMediumColor">#FFCCCCCC</Color>
                <RevealBackgroundBrush x:Key="SystemControlHighlightListLowRevealBackgroundBrush" TargetTheme="Light" Color="{ThemeResource SystemRevealListMediumColor}" FallbackColor="{ StaticResource SystemListMediumColor}" />
                <Color x:Key="RegionColor">#FFFFFFFF</Color>
                <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    <ResourceDictionary x:Key="HighContrast">
        <StaticResource x:Key="RegionColor" ResourceKey="SystemColorWindowColor" />
        <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
    </ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>

Support for more than 2 themes

Feature Request

Currently theme editor offers 2 themes ( Light/Dark ) which basically overrides the System defined light and dark themes.

But what if another optional feature can be added to it, where the developer can basically generate a List of themes? Each theme with exactly the same editing features as dark and light but developer can create multiple flavors of their app, considering they dont have a fixed branding and they want the user to select theme according to their liking.

How it will work is that after the editor finishes generating and exporting themes, all of those themes can be put into app.xaml and then in settings of the user they can toggle between all those themes, this toggle functionality will be developed by the user obviously, theme editor cn maybe provide a helper class for switching between the themes i.e : ThemeSwitcher.

Windows Template Studio already has a theme switcher in setting which toggles between Light , Dark and Windows Default. following same method other themes can also be added to the list.

Tricky Part

the min tricky part I noticed which might occur in this feature is that windows 10 has just 2 built in themes ( light/dark), so how will we include other themes to follow the same pattren of theme switching? I have a rough solution to that :

When the app is switched to light or dark, the app will look into respective resources present in app.xaml ( generated by theme editor ) and apply them to the system light or dark themes respectively. What we need to do in ThemeSwitcher is map other themes to light and dark. For-Example I have total 4 themes

  1. Light (default )
  2. Dark ( default )
  3. Neon ( custom name by developer ) ( will be mapped to light theme )
  4. Slate ( custom name by developer ) ( will be mapped to dark theme )

now when the user selects Neon the ThemeSwitcher will take the Neon Resources and apply them to Light Theme and then change the ApplicationTheme to Light. And when Slate is selected its resources will be applied to Dark Theme and then App theme will be switched to Dark.

This is still just a rough idea, so I thought I should put it out there and make it open for discussion maybe with the community and see what they think about it? Apart from the open choice of themes, it will have another major benefit : above OCT 2018 update theme editor supports localized theme ( different theme at different parts of the app ) and if we have more than 2 themes it will just give a lot more flexibility to the developer on how they want to design the app.

we can always limit the number of themes the editor can generate at one time so that editor app itself remains fast or if too much resources in app.xaml has consequences or for any other reason possible. but for complexity sake it doesnt effect the process because, if we re able to create more than 2 themes then technically we should be able to toggle between infinite amount of themes.

Thanks for reading

Nighttime Export has missing references on default export

When exporting the default theme RevealBackgroundSource element is not found, as well as BackgroundSource property on the AcrylicBrush element is not found.

Environment:

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>Test.Application</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x86;x64;arm64</Platforms>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <UseWinUI>true</UseWinUI>
    <SupportedOSPlatformVersion>10.0.17763.0</SupportedOSPlatformVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Mvvm" Version="7.0.3" />
    <PackageReference Include="CommunityToolkit.WinUI.UI.Controls" Version="7.0.3" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
    <PackageReference Include="Microsoft.ProjectReunion" Version="0.8.5" />
    <PackageReference Include="Microsoft.ProjectReunion.Foundation" Version="0.8.5" />
    <PackageReference Include="Microsoft.ProjectReunion.WinUI" Version="0.8.5" />
    <Manifest Include="$(ApplicationManifest)" />
  </ItemGroup>

Does Not Go Past Splash Screen

When opened, Fluent XAML Theme Editor does not progress past the initial blue screen with the app logo in the center. App was obtained from Microsoft Store.

App is running on Windows 10 1909. System language is set to French.

Does not start properly

The Fluent Xaml theme editor does not get past the SplashScreen.

It simply hangs - no error, no other change.

Installed via Microsoft Store on Windows Insider build 19025.1.

Date Picker not rendering with correct default colours

image

On the left is how the Date Picker flyout is rendered in the XAML Controls Gallery app - specifically the Acrylic colour and the top and bottom scroll indicator buttons.

On the right is how it appears in the Fluent Theme Editor - Shape Font Customisation branch

Why the current, multi-project, architecture?

Why is there a shared project and a main app project?
The code in the shared project seems very specific to the FXTE.
Also, it's not shared with anything else. Is this an indication that there may be other, related projects added to the solution or is it just a historical artifact?
If a historical artifact, would suggestions for simplifying/rationalizing the code be welcome?

Use with Border Control

The Border control does not follow the theme. If I set
BorderBrush="{ThemeResource ComboBoxBorderThemeBrush}"
I get light and dark colors but they don't match the Combo Box Border colors?

What is the best way to apply the theme to a Border?

Support for acrylic Brush

Feature Request

Support for built in ThemeResources based AcrylicBrush, both the in-app acrylic and the window-acrylic ( when you window of your app is transparent to other apps ). Since the theme editor only deals with dark and light theme resources, I think custom acrylic doesn't make any sense here ( correct me if I am wrong ).

Code behind example is problematic.

The code behind example is problematic because there is no "Dark" key in the dictionary.

Using pure XAML and setting RequestedTheme="Dark" in the page tag works fine.

Also setting this.RequestedTheme=ElementTheme.Dark; in the code behind works fine.

Can anyone explain or point to a reference for how the dark theme is actually created since the dictionary produced by the fluent-xaml-theme-editor does not have a "Dark" key.

Translation to other languages

Original issue

How will you manage localization of the app? Will it be translated by the community or by the team at Microsoft?
If you want I could open a pull request with the Spanish translation.

Localization status

  • English
  • Spanish
  • Portuguese
  • Italian
  • French
  • Russian
  • German
  • Polish
  • Dutch
  • Norwegian
  • Simplified Chinese
  • Traditional Chinese

It's time to update this app for WinUI3

There are a number of new controls in WinUI 3 that are not included in this app. To make it future proof and really useful I would add this two things to the wish list:

  1. Allow the user to import new controls besides the fix set of built in common controls.
  2. I import actual style definitions to edit and save again
    Just my two cents.

I think the Generated Accent Colours are coming out the wrong way around

So if you use:
#7f7f7f as your accent colour...

it generates:

          <Color x:Key="SystemAccentColorDark1">#FF8F8F8F</Color>
                    <Color x:Key="SystemAccentColorDark2">#FF9F9F9F</Color>
                    <Color x:Key="SystemAccentColorDark3">#FFB0B0B0</Color>
                    <Color x:Key="SystemAccentColorLight1">#FF6E6E6E</Color>
                    <Color x:Key="SystemAccentColorLight2">#FF5D5D5D</Color>
                    <Color x:Key="SystemAccentColorLight3">#FF4B4B4B</Color>

If I am not mistakend. the light colors are getting darker, and the dark colors are getting lighter?

And it should be the other way around?

listview in sample app has no border reveal

in the sample app when I bring the pointer close to the listview it should show the reveal highlight on the borders, but it does not, however when I hover on the listviewitems, then I can see the reveal properly. However the issue does not exist when the theme is actually exported into a uwp app.

This app can not launch both on my pc and tablet anymore.

I download this app from Microsoft Store.
In this week, I find the app can not launch anymore, either on pc or tablet, just stuck in the Logo page.
image
It used to be work well. I don't know the reason.

My Pc OS version: 19041.264
My Tablet OS version: 18363.836

If you need more information, please let me know.

ComboBox header not visible with some style editing

So I made a custom combo box style where the border wraps around the header as well as combobox content itself., it was working fine as expected and header was showing up fine, but then I opened "Fluent xaml theme editor" (uwp theme generator from store) and left it on default and exported the theme into my "app.xaml" and now header has disappeared. Below is the link to reproduce the issue, just open the project and run it and u will see on both light and dark theme there is no header on the combobox.

reproduce issue project : https://github.com/touseefbsb/ComboBoxThemeIssue
min target : 1803
target sdk : 1809/1903 ( 1809 shows header only in dark theme, 1903 doesnt show header in both themes )

Output

image

image

Code

MainPage

<Pivot>
        <PivotItem Header="Dropdowns">
            <PivotItem.Resources>
                <DataTemplate x:Key="dropdowns">
                    <StackPanel Background="{ThemeResource SystemAltHighColor}">
                        <ComboBox Header="Header">
                            <ComboBoxItem>123</ComboBoxItem>
                            <ComboBoxItem>456</ComboBoxItem>
                            <ComboBoxItem>789</ComboBoxItem>
                        </ComboBox>
                    </StackPanel>
                </DataTemplate>
            </PivotItem.Resources>
            <Pivot>
                <PivotItem Header="Light" RequestedTheme="Light">
                    <ContentControl ContentTemplate="{StaticResource dropdowns}" />
                </PivotItem>
                <PivotItem Header="Dark" RequestedTheme="Dark">
                    <ContentControl ContentTemplate="{StaticResource dropdowns}" />
                </PivotItem>
            </Pivot>
        </PivotItem>
    </Pivot>

App.xaml

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--  Free Public License 1.0.0 Permission to use, copy, modify, and/or distribute this code for any purpose with or without fee is hereby granted.  -->
                <ResourceDictionary
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:BelowWindows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract, 7)"
                    xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)">
                    <ResourceDictionary.ThemeDictionaries>
                        <ResourceDictionary x:Key="Default">
                            <ResourceDictionary.MergedDictionaries>
                                <Windows10version1809:ColorPaletteResources
                                    Accent="#FF0073CF"
                                    AltHigh="#FF000000"
                                    AltLow="#FF000000"
                                    AltMedium="#FF000000"
                                    AltMediumHigh="#FF000000"
                                    AltMediumLow="#FF000000"
                                    BaseHigh="#FFFFFFFF"
                                    BaseLow="#FF333333"
                                    BaseMedium="#FF9A9A9A"
                                    BaseMediumHigh="#FFB4B4B4"
                                    BaseMediumLow="#FF676767"
                                    ChromeAltLow="#FFB4B4B4"
                                    ChromeBlackHigh="#FF000000"
                                    ChromeBlackLow="#FFB4B4B4"
                                    ChromeBlackMedium="#FF000000"
                                    ChromeBlackMediumLow="#FF000000"
                                    ChromeDisabledHigh="#FF333333"
                                    ChromeDisabledLow="#FF9A9A9A"
                                    ChromeGray="#FF808080"
                                    ChromeHigh="#FF808080"
                                    ChromeLow="#FF151515"
                                    ChromeMedium="#FF1D1D1D"
                                    ChromeMediumLow="#FF2C2C2C"
                                    ChromeWhite="#FFFFFFFF"
                                    ListLow="#FF1D1D1D"
                                    ListMedium="#FF333333" />
                                <ResourceDictionary>
                                    <BelowWindows10version1809:Color x:Key="SystemAccentColor">#FF0073CF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltHighColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltLowColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumHighColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumLowColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseHighColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseLowColor">#FF333333</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumColor">#FF9A9A9A</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumHighColor">#FFB4B4B4</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumLowColor">#FF676767</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeAltLowColor">#FFB4B4B4</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackHighColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackLowColor">#FFB4B4B4</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackMediumColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackMediumLowColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeDisabledHighColor">#FF333333</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeDisabledLowColor">#FF9A9A9A</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeGrayColor">#FF808080</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeHighColor">#FF808080</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeLowColor">#FF151515</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeMediumColor">#FF1D1D1D</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeMediumLowColor">#FF2C2C2C</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemListLowColor">#FF1D1D1D</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemListMediumColor">#FF333333</BelowWindows10version1809:Color>
                                    <Color x:Key="SystemChromeAltMediumHighColor">#CC000000</Color>
                                    <Color x:Key="SystemChromeAltHighColor">#FF333333</Color>
                                    <Color x:Key="SystemRevealListLowColor">#FF1D1D1D</Color>
                                    <Color x:Key="SystemRevealListMediumColor">#FF333333</Color>
                                    <!--  Override system shape defaults  -->
                                    <CornerRadius x:Key="ControlCornerRadius">2,2,2,2</CornerRadius>
                                    <CornerRadius x:Key="OverlayCornerRadius">4,4,4,4</CornerRadius>
                                    <!--  Override system borders  -->
                                    <Thickness x:Key="MenuBarItemBorderThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="GridViewItemMultiselectBorderThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="CheckBoxBorderThemeThickness">1</Thickness>
                                    <x:Double x:Key="GridViewItemSelectedBorderThemeThickness">1</x:Double>
                                    <x:Double x:Key="RadioButtonBorderThemeThickness">1</x:Double>
                                    <Thickness x:Key="ButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="CalendarDatePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="TimePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="DatePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleSwitchOuterBorderStrokeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="RepeatButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="SearchBoxBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="TextControlBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="RepeatButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarEllipsisButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarToggleButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ListViewItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="GridViewItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ComboBoxItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <x:Double x:Key="PersonPictureEllipseBadgeStrokeThickness">1</x:Double>
                                    <!--  Override system generated accent colors  -->
                                    <Color x:Key="SystemAccentColorDark1">#FF1D85D7</Color>
                                    <Color x:Key="SystemAccentColorDark2">#FF3B97DF</Color>
                                    <Color x:Key="SystemAccentColorDark3">#FF58A8E8</Color>
                                    <Color x:Key="SystemAccentColorLight1">#FF0064BE</Color>
                                    <Color x:Key="SystemAccentColorLight2">#FF0055AD</Color>
                                    <Color x:Key="SystemAccentColorLight3">#FF00459D</Color>
                                    <Color x:Key="RegionColor">#FF000000</Color>
                                    <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
                                </ResourceDictionary>
                            </ResourceDictionary.MergedDictionaries>
                        </ResourceDictionary>
                        <ResourceDictionary x:Key="Light">
                            <ResourceDictionary.MergedDictionaries>
                                <Windows10version1809:ColorPaletteResources
                                    Accent="#FF0073CF"
                                    AltHigh="#FFFFFFFF"
                                    AltLow="#FFFFFFFF"
                                    AltMedium="#FFFFFFFF"
                                    AltMediumHigh="#FFFFFFFF"
                                    AltMediumLow="#FFFFFFFF"
                                    BaseHigh="#FF000000"
                                    BaseLow="#FFCCCCCC"
                                    BaseMedium="#FF898989"
                                    BaseMediumHigh="#FF5D5D5D"
                                    BaseMediumLow="#FF737373"
                                    ChromeAltLow="#FF5D5D5D"
                                    ChromeBlackHigh="#FF000000"
                                    ChromeBlackLow="#FFCCCCCC"
                                    ChromeBlackMedium="#FF5D5D5D"
                                    ChromeBlackMediumLow="#FF898989"
                                    ChromeDisabledHigh="#FFCCCCCC"
                                    ChromeDisabledLow="#FF898989"
                                    ChromeGray="#FF737373"
                                    ChromeHigh="#FFCCCCCC"
                                    ChromeLow="#FFECECEC"
                                    ChromeMedium="#FFE6E6E6"
                                    ChromeMediumLow="#FFECECEC"
                                    ChromeWhite="#FFFFFFFF"
                                    ListLow="#FFE6E6E6"
                                    ListMedium="#FFCCCCCC" />
                                <ResourceDictionary>
                                    <BelowWindows10version1809:Color x:Key="SystemAccentColor">#FF0073CF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltHighColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltLowColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumHighColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemAltMediumLowColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseHighColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseLowColor">#FFCCCCCC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumColor">#FF898989</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumHighColor">#FF5D5D5D</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemBaseMediumLowColor">#FF737373</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeAltLowColor">#FF5D5D5D</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackHighColor">#FF000000</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackLowColor">#FFCCCCCC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackMediumColor">#FF5D5D5D</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeBlackMediumLowColor">#FF898989</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeDisabledHighColor">#FFCCCCCC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeDisabledLowColor">#FF898989</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeGrayColor">#FF737373</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeHighColor">#FFCCCCCC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeLowColor">#FFECECEC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeMediumColor">#FFE6E6E6</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeMediumLowColor">#FFECECEC</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemListLowColor">#FFE6E6E6</BelowWindows10version1809:Color>
                                    <BelowWindows10version1809:Color x:Key="SystemListMediumColor">#FFCCCCCC</BelowWindows10version1809:Color>
                                    <Color x:Key="SystemChromeAltMediumHighColor">#CCFFFFFF</Color>
                                    <Color x:Key="SystemChromeAltHighColor">#FFCCCCCC</Color>
                                    <Color x:Key="SystemRevealListLowColor">#FFE6E6E6</Color>
                                    <Color x:Key="SystemRevealListMediumColor">#FFCCCCCC</Color>
                                    <!--  Override system shape defaults  -->
                                    <CornerRadius x:Key="ControlCornerRadius">2,2,2,2</CornerRadius>
                                    <CornerRadius x:Key="OverlayCornerRadius">4,4,4,4</CornerRadius>
                                    <!--  Override system borders  -->
                                    <Thickness x:Key="MenuBarItemBorderThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="GridViewItemMultiselectBorderThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="CheckBoxBorderThemeThickness">1</Thickness>
                                    <x:Double x:Key="GridViewItemSelectedBorderThemeThickness">1</x:Double>
                                    <x:Double x:Key="RadioButtonBorderThemeThickness">1</x:Double>
                                    <Thickness x:Key="ButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="CalendarDatePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="TimePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="DatePickerBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleSwitchOuterBorderStrokeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="RepeatButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="SearchBoxBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleButtonBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="TextControlBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="RepeatButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ToggleButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarEllipsisButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="AppBarToggleButtonRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ListViewItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="GridViewItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <Thickness x:Key="ComboBoxItemRevealBorderThemeThickness">1,1,1,1</Thickness>
                                    <x:Double x:Key="PersonPictureEllipseBadgeStrokeThickness">1</x:Double>
                                    <!--  Override system generated accent colors  -->
                                    <Color x:Key="SystemAccentColorLight1">#FF1D85D7</Color>
                                    <Color x:Key="SystemAccentColorLight2">#FF3B97DF</Color>
                                    <Color x:Key="SystemAccentColorLight3">#FF58A8E8</Color>
                                    <Color x:Key="SystemAccentColorDark1">#FF0064BE</Color>
                                    <Color x:Key="SystemAccentColorDark2">#FF0055AD</Color>
                                    <Color x:Key="SystemAccentColorDark3">#FF00459D</Color>
                                    <RevealBackgroundBrush
                                        x:Key="SystemControlHighlightListLowRevealBackgroundBrush"
                                        FallbackColor="{StaticResource SystemListMediumColor}"
                                        TargetTheme="Light"
                                        Color="{ThemeResource SystemRevealListMediumColor}" />
                                    <Color x:Key="RegionColor">#FFFFFFFF</Color>
                                    <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
                                </ResourceDictionary>
                            </ResourceDictionary.MergedDictionaries>
                        </ResourceDictionary>
                        <ResourceDictionary x:Key="HighContrast">
                            <StaticResource x:Key="RegionColor" ResourceKey="SystemColorWindowColor" />
                            <SolidColorBrush x:Key="RegionBrush" Color="{StaticResource RegionColor}" />
                        </ResourceDictionary>
                    </ResourceDictionary.ThemeDictionaries>
                </ResourceDictionary>

                <ResourceDictionary>
                    <Thickness x:Key="ComboBoxBorderThemeThickness">1</Thickness>

                    <!--  Default style for Windows.UI.Xaml.Controls.ComboBox  -->

                    <Style x:Key="HeaderedComboBoxStyle" TargetType="ComboBox">
                        <Setter Property="Padding" Value="12,5,0,7" />
                        <Setter Property="MinWidth" Value="{ThemeResource ComboBoxThemeMinWidth}" />
                        <Setter Property="Foreground" Value="{ThemeResource ComboBoxForeground}" />
                        <Setter Property="Background" Value="{ThemeResource ComboBoxBackground}" />
                        <Setter Property="BorderBrush" Value="{ThemeResource ComboBoxBorderBrush}" />
                        <Setter Property="BorderThickness" Value="{ThemeResource ComboBoxBorderThemeThickness}" />
                        <Setter Property="TabNavigation" Value="Once" />
                        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
                        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
                        <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
                        <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto" />
                        <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True" />
                        <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" />
                        <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True" />
                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                        <Setter Property="HorizontalAlignment" Value="Left" />
                        <Setter Property="VerticalAlignment" Value="Top" />
                        <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
                        <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
                        <Setter Property="UseSystemFocusVisuals" Value="{ThemeResource IsApplicationFocusVisualKindReveal}" />
                        <Setter Property="ItemsPanel">
                            <Setter.Value>
                                <ItemsPanelTemplate>
                                    <CarouselPanel />
                                </ItemsPanelTemplate>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="ComboBox">
                                    <Grid x:Name="LayoutRoot">
                                        <Grid.Resources>
                                            <Storyboard x:Key="OverlayOpeningAnimation">
                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
                                                    <DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.0" />
                                                    <SplineDoubleKeyFrame
                                                        KeySpline="0.1,0.9 0.2,1.0"
                                                        KeyTime="0:0:0.383"
                                                        Value="1.0" />
                                                </DoubleAnimationUsingKeyFrames>
                                            </Storyboard>
                                            <Storyboard x:Key="OverlayClosingAnimation">
                                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
                                                    <DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0" />
                                                    <SplineDoubleKeyFrame
                                                        KeySpline="0.1,0.9 0.2,1.0"
                                                        KeyTime="0:0:0.216"
                                                        Value="0.0" />
                                                </DoubleAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </Grid.Resources>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto" />
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="32" />
                                        </Grid.ColumnDefinitions>
                                        <ContentPresenter
                                            x:Name="HeaderContentPresenter"
                                            Margin="{ThemeResource ComboBoxHeaderThemeMargin}"
                                            x:DeferLoadStrategy="Lazy"
                                            Content="{TemplateBinding Header}"
                                            ContentTemplate="{TemplateBinding HeaderTemplate}"
                                            FlowDirection="{TemplateBinding FlowDirection}"
                                            FontWeight="{ThemeResource ComboBoxHeaderThemeFontWeight}"
                                            Visibility="Collapsed" />
                                        <Border
                                            x:Name="Background"
                                            Grid.RowSpan="2"
                                            Grid.ColumnSpan="2"
                                            Background="{TemplateBinding Background}"
                                            BorderBrush="{TemplateBinding BorderBrush}"
                                            BorderThickness="{TemplateBinding BorderThickness}"
                                            Control.IsTemplateFocusTarget="True" />
                                        <Border
                                            x:Name="HighlightBackground"
                                            Grid.RowSpan="2"
                                            Grid.ColumnSpan="2"
                                            Background="{ThemeResource ComboBoxBackgroundUnfocused}"
                                            BorderBrush="{ThemeResource ComboBoxBackgroundBorderBrushUnfocused}"
                                            BorderThickness="{TemplateBinding BorderThickness}"
                                            Opacity="0" />
                                        <ContentPresenter
                                            x:Name="ContentPresenter"
                                            Grid.Row="1"
                                            Margin="{TemplateBinding Padding}"
                                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                                            <TextBlock
                                                x:Name="PlaceholderTextBlock"
                                                Foreground="{Binding PlaceholderForeground, RelativeSource={RelativeSource TemplatedParent}, TargetNullValue={ThemeResource ComboBoxPlaceHolderForeground}}"
                                                Text="{TemplateBinding PlaceholderText}" />
                                        </ContentPresenter>
                                        <FontIcon
                                            x:Name="DropDownGlyph"
                                            Grid.Row="1"
                                            Grid.Column="1"
                                            Margin="0,10,10,10"
                                            HorizontalAlignment="Right"
                                            VerticalAlignment="Center"
                                            AutomationProperties.AccessibilityView="Raw"
                                            FontFamily="{ThemeResource SymbolThemeFontFamily}"
                                            FontSize="12"
                                            Foreground="{ThemeResource ComboBoxDropDownGlyphForeground}"
                                            Glyph="&#xE0E5;"
                                            IsHitTestVisible="False" />
                                        <Popup x:Name="Popup">
                                            <Border
                                                x:Name="PopupBorder"
                                                Margin="0,-1,0,-1"
                                                HorizontalAlignment="Stretch"
                                                Background="{ThemeResource ComboBoxDropDownBackground}"
                                                BorderBrush="{ThemeResource ComboBoxDropDownBorderBrush}"
                                                BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}">
                                                <ScrollViewer
                                                    x:Name="ScrollViewer"
                                                    MinWidth="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownContentMinWidth}"
                                                    AutomationProperties.AccessibilityView="Raw"
                                                    BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"
                                                    Foreground="{ThemeResource ComboBoxDropDownForeground}"
                                                    HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                                                    HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
                                                    IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
                                                    IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
                                                    IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
                                                    VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                                                    VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
                                                    VerticalSnapPointsAlignment="Near"
                                                    VerticalSnapPointsType="OptionalSingle"
                                                    ZoomMode="Disabled">
                                                    <ItemsPresenter Margin="{ThemeResource ComboBoxDropdownContentMargin}" />
                                                </ScrollViewer>
                                            </Border>
                                        </Popup>

                                        <VisualStateManager.VisualStateGroups>
                                            <VisualStateGroup x:Name="CommonStates">
                                                <VisualState x:Name="Normal" />

                                                <VisualState x:Name="PointerOver">

                                                    <Storyboard>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Background" Storyboard.TargetProperty="BorderBrush">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxBorderBrushPointerOver}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>

                                                <VisualState x:Name="Pressed">

                                                    <Storyboard>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Background" Storyboard.TargetProperty="BorderBrush">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxBorderBrushPressed}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>

                                                <VisualState x:Name="Disabled">

                                                    <Storyboard>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Background" Storyboard.TargetProperty="Background">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxBackgroundDisabled}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Background" Storyboard.TargetProperty="BorderBrush">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxBorderBrushDisabled}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderContentPresenter" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxForegroundDisabled}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxForegroundDisabled}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextBlock" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding PlaceholderForeground, RelativeSource={RelativeSource TemplatedParent}, TargetNullValue={ThemeResource ComboBoxForegroundDisabled}}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DropDownGlyph" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDropDownGlyphForegroundDisabled}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>
                                            </VisualStateGroup>
                                            <VisualStateGroup x:Name="FocusStates">
                                                <VisualState x:Name="Focused">

                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="HighlightBackground"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0" />
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HighlightBackground" Storyboard.TargetProperty="BorderBrush">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxBackgroundBorderBrushFocused}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxForegroundFocused}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextBlock" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding PlaceholderForeground, RelativeSource={RelativeSource TemplatedParent}, TargetNullValue={ThemeResource ComboBoxForegroundFocused}}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DropDownGlyph" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDropDownGlyphForegroundFocused}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>
                                                <VisualState x:Name="FocusedPressed">

                                                    <Storyboard>
                                                        <DoubleAnimation
                                                            Storyboard.TargetName="HighlightBackground"
                                                            Storyboard.TargetProperty="Opacity"
                                                            To="1"
                                                            Duration="0" />
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxForegroundFocusedPressed}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextBlock" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{Binding PlaceholderForeground, RelativeSource={RelativeSource TemplatedParent}, TargetNullValue={ThemeResource ComboBoxPlaceHolderForegroundFocusedPressed}}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DropDownGlyph" Storyboard.TargetProperty="Foreground">
                                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ComboBoxDropDownGlyphForegroundFocusedPressed}" />
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>
                                                <VisualState x:Name="Unfocused" />
                                                <VisualState x:Name="PointerFocused" />
                                                <VisualState x:Name="FocusedDropDown">

                                                    <Storyboard>
                                                        <ObjectAnimationUsingKeyFrames
                                                            Storyboard.TargetName="PopupBorder"
                                                            Storyboard.TargetProperty="Visibility"
                                                            Duration="0">
                                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                                <DiscreteObjectKeyFrame.Value>
                                                                    <Visibility>Visible</Visibility>
                                                                </DiscreteObjectKeyFrame.Value>
                                                            </DiscreteObjectKeyFrame>
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </VisualState>
                                            </VisualStateGroup>
                                            <VisualStateGroup x:Name="DropDownStates">
                                                <VisualState x:Name="Opened">

                                                    <Storyboard>
                                                        <SplitOpenThemeAnimation
                                                            ClosedTargetName="ContentPresenter"
                                                            OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}"
                                                            OpenedLength="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOpenedHeight}"
                                                            OpenedTargetName="PopupBorder" />
                                                    </Storyboard>
                                                </VisualState>
                                                <VisualState x:Name="Closed">

                                                    <Storyboard>
                                                        <SplitCloseThemeAnimation
                                                            ClosedTargetName="ContentPresenter"
                                                            OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}"
                                                            OpenedLength="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOpenedHeight}"
                                                            OpenedTargetName="PopupBorder" />
                                                    </Storyboard>
                                                </VisualState>
                                            </VisualStateGroup>

                                        </VisualStateManager.VisualStateGroups>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                    <Style BasedOn="{StaticResource HeaderedComboBoxStyle}" TargetType="ComboBox" />

                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

Theme 'colours' not applied to all controls

I've been testing the Fluent XAML Theme Editor and changed a few colours for the dark theme, as you can see some controls don't inherit the theme colours, the combobox, textbox and datepicker amongst others are black rather than a theme colour.

It's not really viable to use as a theme editor if each control has to be themed individually. Is this a bug and/or will it be fixed in final version?

fluentXAML

Windows Accent Color Coming Through

If I change the Windows 10 accent color, I can see this color (lime) come through instead of the in-app selected accent color (blue) in some cases (e.g. mouse hover over check box). See image.

accentColor

Interestingly, this happens for mouse hover in both Light and Dark themes for check boxes, radio buttons and slider controls, but only in Dark theme for toggle switch control.

All generated colors are opaque

All color values generated by the tool have an alpha value of 255, compared to the default system colors that are partially transparent. This creates issues for example for the NavigationView if transparency effects are disabled (the pointer over effect is not visible with a color scheme exported by the tool).

Distribution through the Microsoft Store

I just want to know if there is any plan of taking this tool to the Microsoft Store, I think it will be a thing nice to have to improve discoverability and ease of use although there's no hurry.
What do you think?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.