ThemeSwitcher

This commit is contained in:
RMBGAME
2022-07-14 06:03:34 +08:00
parent 09557235c9
commit 615f5ff438
8 changed files with 456 additions and 223 deletions
@@ -19,8 +19,10 @@ namespace System.Application.Converters
}
else
{
if (value is string c3 && Color2.TryParse(c3, out var cc))
if (value is string c3 && Color.TryParse(c3, out var cc))
return cc;
if (value is string c4 && Color2.TryParse(c4, out var cc1))
return cc1;
}
return value;
}
@@ -8,6 +8,11 @@
<ui:ViewLocator/>
</Application.DataTemplates>
<Application.Resources>
<!--<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>-->
<converters:IsNullConverter x:Key="IsNullConverter" />
<converters:IsVisibleToOpacityConverter x:Key="IsVisibleToOpacityConverter" />
<converters:IsReadOnlyPasswordBoxConverter x:Key="IsReadOnlyPasswordBoxConverter" />
@@ -22,17 +27,17 @@
<Application.Styles>
<!--<FluentTheme Mode="Dark" />-->
<sty:FluentAvaloniaTheme RequestedTheme="Dark"
UseUserAccentColorOnWindows="False"
PreferUserAccentColor="False"
UseSystemFontOnWindows="False"
UseSystemThemeOnWindows="False"/>
<StyleInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeDark.xaml" />
<StyleInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeAccent.xaml" />
PreferSystemTheme="False"/>
<ui:CustomTheme Mode="Dark"/>
<!--<StyleInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeAccent.xaml" />-->
<!--<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>-->
<!--<StyleInclude Source="avares://AvaloniaEdit/AvaloniaEdit.xaml"/>-->
<StyleInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Controls.xaml" />
<!--<StyleInclude Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Controls.xaml" />-->
</Application.Styles>
<!-- (NativeMenu.Menu) https://github.com/AvaloniaUI/Avalonia/issues/3541 -->
@@ -30,6 +30,7 @@ using AvaloniaApplication = Avalonia.Application;
using ShutdownMode = Avalonia.Controls.ShutdownMode;
using Window = Avalonia.Controls.Window;
using WindowState = Avalonia.Controls.WindowState;
using Avalonia.Markup.Xaml.MarkupExtensions;
#if WINDOWS
//using WpfApplication = System.Windows.Application;
#endif
@@ -123,20 +124,24 @@ namespace System.Application.UI
}
//var uri_0 = new Uri($"avares://Avalonia.Themes.Fluent/Fluent{themeName}.xaml");
var uri_1 = new Uri($"avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Theme{themeName}.xaml");
//Styles[0] = new FluentTheme(uri_0)
//{
// Mode = mode,
//};
Styles[1] = new StyleInclude(uri_1)
{
Source = uri_1,
};
//var uri_1 = new Uri($"avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Theme{themeName}.xaml");
var faTheme = AvaloniaLocator.Current.GetService<FluentAvaloniaTheme>();
if (faTheme != null)
faTheme.RequestedTheme = themeName;
var csTheme = AvaloniaLocator.Current.GetService<CustomTheme>();
if (csTheme != null)
csTheme.Mode = themeName;
//if (Resources.Count > 1)
//{
// //Styles[0] = new FluentTheme(uri_0)
// //{
// // Mode = mode,
// //};
// Resources.MergedDictionaries[0] = (ResourceDictionary)AvaloniaXamlLoader.Load(uri_1);
//}
}
public static void SetThemeAccent(string? colorHex)
@@ -0,0 +1,208 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.Styling;
using Avalonia.Styling;
using FluentAvalonia.Styling;
using System;
using System.Collections.Generic;
namespace System.Application.UI
{
/// <summary>
/// Includes the fluent theme in an application.
/// </summary>
public class CustomTheme : AvaloniaObject, IStyle, IResourceProvider
{
private readonly Uri _baseUri;
private Styles _sharedStyles = new();
private Styles _fluentDark = new();
private Styles _fluentLight = new();
private bool _isLoading;
private IStyle? _loaded;
private readonly ResourceDictionary _themeResources = new ResourceDictionary();
/// <summary>
/// Initializes a new instance of the <see cref="CustomTheme"/> class.
/// </summary>
/// <param name="baseUri">The base URL for the XAML context.</param>
public CustomTheme(Uri baseUri)
{
_baseUri = baseUri;
InitStyles(baseUri);
}
/// <summary>
/// Initializes a new instance of the <see cref="CustomTheme"/> class.
/// </summary>
/// <param name="serviceProvider">The XAML service provider.</param>
public CustomTheme(IServiceProvider serviceProvider)
{
_baseUri = ((IUriContext)serviceProvider.GetService(typeof(IUriContext))).BaseUri;
InitStyles(_baseUri);
}
public static readonly StyledProperty<string> ModeProperty =
AvaloniaProperty.Register<CustomTheme, string>(nameof(Mode), "Dark");
/// <summary>
/// Gets or sets the mode of the fluent theme (light, dark).
/// </summary>
public string Mode
{
get => GetValue(ModeProperty);
set => SetValue(ModeProperty, value);
}
protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
{
base.OnPropertyChanged<T>(change);
if (_loaded is null)
{
// If style wasn't yet loaded, no need to change children styles,
// it will be applied later in Loaded getter.
return;
}
if (change.Property == ModeProperty)
{
//if (Mode == FluentAvaloniaTheme.DarkModeString)
//{
// //(Loaded as Styles)![0] = _fluentDark[0];
//}
//else
//{
// //(Loaded as Styles)![0] = _fluentLight[0];
//}
// Remove the old theme of any resources
_themeResources.MergedDictionaries[0] =
(ResourceDictionary)AvaloniaXamlLoader.Load(new Uri($"avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Theme{Mode}.xaml"), _baseUri);
Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Empty);
}
}
public IResourceHost? Owner => (Loaded as IResourceProvider)?.Owner;
/// <summary>
/// Gets the loaded style.
/// </summary>
public IStyle Loaded
{
get
{
if (_loaded == null)
{
_isLoading = true;
if (Mode == FluentAvaloniaTheme.LightModeString)
{
_loaded = new Styles() { _sharedStyles };
}
else
{
_loaded = new Styles() { _sharedStyles };
}
_isLoading = false;
}
return _loaded!;
}
}
bool IResourceNode.HasResources => (Loaded as IResourceProvider)?.HasResources ?? false;
IReadOnlyList<IStyle> IStyle.Children => _loaded?.Children ?? Array.Empty<IStyle>();
public event EventHandler? OwnerChanged
{
add
{
if (Loaded is IResourceProvider rp)
{
rp.OwnerChanged += value;
}
}
remove
{
if (Loaded is IResourceProvider rp)
{
rp.OwnerChanged -= value;
}
}
}
public SelectorMatchResult TryAttach(IStyleable target, IStyleHost? host) => Loaded.TryAttach(target, host);
public bool TryGetResource(object key, out object? value)
{
// Github build failing with this not being set, even tho it passes locally
value = null;
// We also search the app level resources so resources can be overridden.
// Do not search App level styles though as we'll have to iterate over them
// to skip the FluentAvaloniaTheme instance or we'll stack overflow
if (Avalonia.Application.Current?.Resources.TryGetResource(key, out value) == true)
return true;
// This checks the actual ResourceDictionary where the SystemResources are stored
// and checks the merged dictionaries where base resources and theme resources are
if (_themeResources.TryGetResource(key, out value))
return true;
if (!_isLoading && Loaded is IResourceProvider p)
{
return p.TryGetResource(key, out value);
}
value = null;
return false;
}
void IResourceProvider.AddOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.AddOwner(owner);
void IResourceProvider.RemoveOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.RemoveOwner(owner);
private void InitStyles(Uri baseUri)
{
AvaloniaLocator.CurrentMutable.Bind<CustomTheme>().ToConstant(this);
_sharedStyles = new Styles
{
new StyleInclude(baseUri)
{
Source = new Uri("avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeAccent.xaml")
},
new StyleInclude(baseUri)
{
Source = new Uri("avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Controls.xaml")
},
};
//_fluentLight = new Styles
//{
// new StyleInclude(baseUri)
// {
// Source = new Uri("avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeLight.xaml")
// }
//};
//_fluentDark = new Styles
//{
// new StyleInclude(baseUri)
// {
// Source = new Uri("avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/ThemeDark.xaml")
// }
//};
// Theme resource colors/brushes
_themeResources.MergedDictionaries.Add(
(ResourceDictionary)AvaloniaXamlLoader.Load(new Uri($"avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Styles/Theme{Mode}.xaml"), _baseUri));
}
}
}
@@ -1,10 +1,10 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Styles.Resources>
<SolidColorBrush x:Key="DataGridGridLinesBrush"
Color="{DynamicResource SystemBaseMediumLowColor}"
Opacity="0.4" />
<SolidColorBrush
x:Key="DataGridGridLinesBrush"
Opacity="0.4"
Color="{DynamicResource SystemBaseMediumLowColor}" />
<SolidColorBrush x:Key="DataGridRowIndicatorBrush" Color="{StaticResource SystemAccentColor}" />
<SolidColorBrush x:Key="DataGridColumnHeaderBackgroundBrush" Color="Transparent" />
<SolidColorBrush x:Key="DataGridCellFocusVisualPrimaryBrush" Color="Transparent" />
@@ -16,9 +16,9 @@
</Styles.Resources>
<Style Selector="DataGrid">
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="CanUserResizeColumns" Value="True"/>
<Setter Property="GridLinesVisibility" Value="Horizontal" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="CanUserResizeColumns" Value="True" />
</Style>
<Style Selector="DataGridRow">
@@ -26,36 +26,44 @@
<Setter Property="Template">
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border Name="PART_SelectionIndicator"
BorderThickness="2 0 0 0"
DockPanel.Dock="Left"
VerticalAlignment="Stretch" />
<DataGridFrozenGrid Name="PART_Root"
RowDefinitions="*,Auto,Auto"
ColumnDefinitions="Auto,*">
<Border
Name="PART_SelectionIndicator"
VerticalAlignment="Stretch"
BorderThickness="2,0,0,0"
DockPanel.Dock="Left" />
<DataGridFrozenGrid
Name="PART_Root"
ColumnDefinitions="Auto,*"
RowDefinitions="*,Auto,Auto">
<Rectangle Name="BackgroundRectangle"
Grid.RowSpan="2"
Grid.ColumnSpan="2" />
<Rectangle x:Name="InvalidVisualElement"
Grid.ColumnSpan="2"
Fill="{DynamicResource DataGridRowInvalidBrush}" />
<Rectangle
Name="BackgroundRectangle"
Grid.RowSpan="2"
Grid.ColumnSpan="2" />
<Rectangle
x:Name="InvalidVisualElement"
Grid.ColumnSpan="2"
Fill="{DynamicResource DataGridRowInvalidBrush}" />
<DataGridRowHeader Name="PART_RowHeader"
Grid.RowSpan="3"
DataGridFrozenGrid.IsFrozen="True" />
<DataGridCellsPresenter Name="PART_CellsPresenter"
Grid.Column="1"
DataGridFrozenGrid.IsFrozen="True" />
<DataGridDetailsPresenter Name="PART_DetailsPresenter"
Grid.Row="1"
Grid.Column="1"
Background="{DynamicResource DataGridDetailsPresenterBackgroundBrush}" />
<Rectangle Name="PART_BottomGridLine"
Grid.Row="2"
Grid.Column="1"
HorizontalAlignment="Stretch"
Height="1" />
<DataGridRowHeader
Name="PART_RowHeader"
Grid.RowSpan="3"
DataGridFrozenGrid.IsFrozen="True" />
<DataGridCellsPresenter
Name="PART_CellsPresenter"
Grid.Column="1"
DataGridFrozenGrid.IsFrozen="True" />
<DataGridDetailsPresenter
Name="PART_DetailsPresenter"
Grid.Row="1"
Grid.Column="1"
Background="{DynamicResource DataGridDetailsPresenterBackgroundBrush}" />
<Rectangle
Name="PART_BottomGridLine"
Grid.Row="2"
Grid.Column="1"
Height="1"
HorizontalAlignment="Stretch" />
</DataGridFrozenGrid>
</DockPanel>
@@ -63,9 +71,9 @@
</Setter>
</Style>
<Style Selector="DataGridRow:pointerover /template/ Rectangle#BackgroundRectangle">
<!--<Style Selector="DataGridRow:pointerover /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource DataGridRowSelectedBackgroundColor}" />
</Style>
</Style>-->
<Style Selector="DataGridRow:selected /template/ Border#PART_SelectionIndicator">
<Setter Property="BorderBrush" Value="{DynamicResource DataGridRowIndicatorBrush}" />
</Style>
@@ -79,7 +87,7 @@
</Style>
<Style Selector="DataGridColumnHeader">
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}"/>
<Setter Property="Foreground" Value="{DynamicResource HighlightForegroundBrushKey}" />
<Setter Property="FontSize" Value="{StaticResource FontSizeH7}" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Padding" Value="10" />
@@ -1,8 +1,8 @@
<Style
<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="using:System">
<Design.PreviewWith>
<!--<Design.PreviewWith>
<StackPanel Background="Transparent" Spacing="5">
<StackPanel.Styles>
<Style Selector="Border">
@@ -15,119 +15,118 @@
<Border Background="{DynamicResource BorderBrushKey}" Classes="paper" />
<Border Background="{DynamicResource ForegroundBrushKey}" Classes="paper" />
</StackPanel>
</Design.PreviewWith>
<Style.Resources>
<Color x:Key="ThemeColorKey">#66202020</Color>
<SolidColorBrush x:Key="ThemeBrushKey" Color="{StaticResource ThemeColorKey}" />
</Design.PreviewWith>-->
<Color x:Key="ThemeColorKey">#66202020</Color>
<SolidColorBrush x:Key="ThemeBrushKey" Color="{StaticResource ThemeColorKey}" />
<Color x:Key="BackgroundColorKey">#EE000000</Color>
<SolidColorBrush x:Key="BackgroundBrushKey" Color="{StaticResource BackgroundColorKey}" />
<Color x:Key="BackgroundColorKey">#EE000000</Color>
<SolidColorBrush x:Key="BackgroundBrushKey" Color="{StaticResource BackgroundColorKey}" />
<Color x:Key="BorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="BorderBrushKey" Color="{StaticResource BorderColorKey}" />
<Color x:Key="BorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="BorderBrushKey" Color="{StaticResource BorderColorKey}" />
<Color x:Key="ForegroundColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="ForegroundBrushKey" Color="{StaticResource ForegroundColorKey}" />
<Color x:Key="ForegroundColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="ForegroundBrushKey" Color="{StaticResource ForegroundColorKey}" />
<Color x:Key="SemiactiveBackgroundColorKey">#FF333337</Color>
<SolidColorBrush x:Key="SemiactiveBackgroundBrushKey" Color="#FF333337" />
<Color x:Key="SemiactiveBackgroundColorKey">#FF333337</Color>
<SolidColorBrush x:Key="SemiactiveBackgroundBrushKey" Color="#FF333337" />
<Color x:Key="SemiactiveBorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="SemiactiveBorderBrushKey" Color="#FF3F3F46" />
<Color x:Key="SemiactiveBorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="SemiactiveBorderBrushKey" Color="#FF3F3F46" />
<Color x:Key="SemiActiveForegroundColorKey">#FFCFCFCF</Color>
<SolidColorBrush x:Key="SemiActiveForegroundBrushKey" Color="{StaticResource SemiActiveForegroundColorKey}" />
<Color x:Key="SemiActiveForegroundColorKey">#FFCFCFCF</Color>
<SolidColorBrush x:Key="SemiActiveForegroundBrushKey" Color="{StaticResource SemiActiveForegroundColorKey}" />
<Color x:Key="ActiveBackgroundColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="ActiveBackgroundBrushKey" Color="#FF3F3F46" />
<Color x:Key="ActiveBackgroundColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="ActiveBackgroundBrushKey" Color="#FF3F3F46" />
<Color x:Key="ActiveBorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="ActiveBorderBrushKey" Color="#FF3F3F46" />
<Color x:Key="ActiveBorderColorKey">#FF3F3F46</Color>
<SolidColorBrush x:Key="ActiveBorderBrushKey" Color="#FF3F3F46" />
<Color x:Key="ActiveForegroundColorKey">White</Color>
<SolidColorBrush x:Key="ActiveForegroundBrushKey" Color="White" />
<Color x:Key="ActiveForegroundColorKey">White</Color>
<SolidColorBrush x:Key="ActiveForegroundBrushKey" Color="White" />
<Color x:Key="InactiveBackgroundColorKey">#FF252525</Color>
<SolidColorBrush x:Key="InactiveBackgroundBrushKey" Color="#FF252525" />
<Color x:Key="InactiveBackgroundColorKey">#FF252525</Color>
<SolidColorBrush x:Key="InactiveBackgroundBrushKey" Color="#FF252525" />
<Color x:Key="InactiveBorderColorKey">#FF3C3C41</Color>
<SolidColorBrush x:Key="InactiveBorderBrushKey" Color="#FF3C3C41" />
<Color x:Key="InactiveBorderColorKey">#FF3C3C41</Color>
<SolidColorBrush x:Key="InactiveBorderBrushKey" Color="#FF3C3C41" />
<Color x:Key="InactiveForegroundColorKey">#FF787878</Color>
<SolidColorBrush x:Key="InactiveForegroundBrushKey" Color="#FF979797" />
<Color x:Key="InactiveForegroundColorKey">#FF787878</Color>
<SolidColorBrush x:Key="InactiveForegroundBrushKey" Color="#FF979797" />
<Color x:Key="HighlightBackgroundColorKey">#FF686868</Color>
<SolidColorBrush x:Key="HighlightBackgroundBrushKey" Color="#FF686868" />
<Color x:Key="HighlightBackgroundColorKey">#FF686868</Color>
<SolidColorBrush x:Key="HighlightBackgroundBrushKey" Color="#FF686868" />
<Color x:Key="HighlightBorderColorKey">#FF686868</Color>
<SolidColorBrush x:Key="HighlightBorderBrushKey" Color="#FF686868" />
<Color x:Key="HighlightBorderColorKey">#FF686868</Color>
<SolidColorBrush x:Key="HighlightBorderBrushKey" Color="#FF686868" />
<Color x:Key="HighlightForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="HighlightForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="HighlightForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="HighlightForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="Highlight2BackgroundColorKey">#FFA0A0A0</Color>
<SolidColorBrush x:Key="Highlight2BackgroundBrushKey" Color="#FFA0A0A0" />
<Color x:Key="Highlight2BackgroundColorKey">#FFA0A0A0</Color>
<SolidColorBrush x:Key="Highlight2BackgroundBrushKey" Color="#FFA0A0A0" />
<Color x:Key="Highlight2BorderColorKey">#FFA0A0A0</Color>
<SolidColorBrush x:Key="Highlight2BorderBrushKey" Color="#FFA0A0A0" />
<Color x:Key="Highlight2BorderColorKey">#FFA0A0A0</Color>
<SolidColorBrush x:Key="Highlight2BorderBrushKey" Color="#FFA0A0A0" />
<Color x:Key="Highlight2ForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="Highlight2ForegroundBrushKey" Color="#FF000000" />
<Color x:Key="Highlight2ForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="Highlight2ForegroundBrushKey" Color="#FF000000" />
<Color x:Key="Highlight3BackgroundColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="Highlight3BackgroundBrushKey" Color="#FFC8C8C8" />
<Color x:Key="Highlight3BackgroundColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="Highlight3BackgroundBrushKey" Color="#FFC8C8C8" />
<Color x:Key="Highlight3BorderColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="Highlight3BorderBrushKey" Color="#FFC8C8C8" />
<Color x:Key="Highlight3BorderColorKey">#FFC8C8C8</Color>
<SolidColorBrush x:Key="Highlight3BorderBrushKey" Color="#FFC8C8C8" />
<Color x:Key="Highlight3ForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="Highlight3ForegroundBrushKey" Color="#FF000000" />
<Color x:Key="Highlight3ForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="Highlight3ForegroundBrushKey" Color="#FF000000" />
<Color x:Key="LinkForegroundColorKey">#FF007FFC</Color>
<SolidColorBrush x:Key="LinkForegroundBrushKey" Color="#FF007FFC" />
<Color x:Key="LinkForegroundColorKey">#FF007FFC</Color>
<SolidColorBrush x:Key="LinkForegroundBrushKey" Color="#FF007FFC" />
<Color x:Key="ActiveLinkForegroundColorKey">#FF007ACC</Color>
<SolidColorBrush x:Key="ActiveLinkForegroundBrushKey" Color="#FF007ACC" />
<Color x:Key="ActiveLinkForegroundColorKey">#FF007ACC</Color>
<SolidColorBrush x:Key="ActiveLinkForegroundBrushKey" Color="#FF007ACC" />
<Color x:Key="ValidationErrorColorKey">#FFC80000</Color>
<SolidColorBrush x:Key="ValidationErrorBrushKey" Color="#FFC80000" />
<Color x:Key="ValidationErrorColorKey">#FFC80000</Color>
<SolidColorBrush x:Key="ValidationErrorBrushKey" Color="#FFC80000" />
<Color x:Key="SystemBaseLowColor">#33FFFFFF</Color>
<Color x:Key="SystemErrorTextColor">#FFF000</Color>
<Color x:Key="SystemChromeMediumColor">#FF1F1F1F</Color>
<Color x:Key="SystemChromeMediumLowColor">#FF2B2B2B</Color>
<Color x:Key="SystemListLowColor">#19FFFFFF</Color>
<Color x:Key="SystemListMediumColor">#33FFFFFF</Color>
<Color x:Key="SystemAltHighColor">#FF000000</Color>
<Color x:Key="SystemBaseHighColor">#FFFFFFFF</Color>
<Color x:Key="SystemBaseMediumLowColor">#66FFFFFF</Color>
<Color x:Key="SystemChromeLowColor">#FF171717</Color>
<Color x:Key="SystemBaseMediumColor">#99FFFFFF</Color>
<Color x:Key="SystemBaseLowColor">#33FFFFFF</Color>
<Color x:Key="SystemErrorTextColor">#FFF000</Color>
<Color x:Key="SystemChromeMediumColor">#FF1F1F1F</Color>
<Color x:Key="SystemChromeMediumLowColor">#FF2B2B2B</Color>
<Color x:Key="SystemListLowColor">#19FFFFFF</Color>
<Color x:Key="SystemListMediumColor">#33FFFFFF</Color>
<Color x:Key="SystemAltHighColor">#FF000000</Color>
<Color x:Key="SystemBaseHighColor">#FFFFFFFF</Color>
<Color x:Key="SystemBaseMediumLowColor">#66FFFFFF</Color>
<Color x:Key="SystemChromeLowColor">#FF171717</Color>
<Color x:Key="SystemBaseMediumColor">#99FFFFFF</Color>
<SolidColorBrush x:Key="SystemControlHighlightBaseLowBrush" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseHighBrush" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumBrush" Color="{StaticResource SystemChromeMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseMediumBrush" Color="{StaticResource SystemBaseMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="{StaticResource SystemChromeMediumLowColor}" />
</Style.Resources>
<SolidColorBrush x:Key="SystemControlHighlightBaseLowBrush" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseHighBrush" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumBrush" Color="{StaticResource SystemChromeMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseMediumBrush" Color="{StaticResource SystemBaseMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="{StaticResource SystemChromeMediumLowColor}" />
</Style>
</ResourceDictionary>
@@ -1,135 +1,134 @@
<Style
<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="using:System">
<Design.PreviewWith>
<StackPanel Background="Transparent" Spacing="5">
<StackPanel.Styles>
<Style Selector="Border">
<Setter Property="Width" Value="200" />
<Setter Property="Height" Value="30" />
</Style>
</StackPanel.Styles>
<Border Background="{DynamicResource ThemeColorKey}" Classes="paper" />
<Border Background="{DynamicResource BackgroundBrushKey}" Classes="paper" />
<Border Background="{DynamicResource BorderBrushKey}" Classes="paper" />
<Border Background="{DynamicResource ForegroundBrushKey}" Classes="paper" />
</StackPanel>
</Design.PreviewWith>
<!--<Design.PreviewWith>
<StackPanel Background="Transparent" Spacing="5">
<StackPanel.Styles>
<Style Selector="Border">
<Setter Property="Width" Value="200" />
<Setter Property="Height" Value="30" />
</Style>
</StackPanel.Styles>
<Border Background="{DynamicResource ThemeColorKey}" Classes="paper" />
<Border Background="{DynamicResource BackgroundBrushKey}" Classes="paper" />
<Border Background="{DynamicResource BorderBrushKey}" Classes="paper" />
<Border Background="{DynamicResource ForegroundBrushKey}" Classes="paper" />
</StackPanel>
</Design.PreviewWith>-->
<Style.Resources>
<Color x:Key="ThemeColorKey">#AAFFFFFF</Color>
<SolidColorBrush x:Key="ThemeBrushKey" Color="{StaticResource ThemeColorKey}" />
<Color x:Key="ThemeColorKey">#AAFFFFFF</Color>
<SolidColorBrush x:Key="ThemeBrushKey" Color="{StaticResource ThemeColorKey}" />
<Color x:Key="BackgroundColorKey">#EEF3F3F3</Color>
<SolidColorBrush x:Key="BackgroundBrushKey" Color="{StaticResource BackgroundColorKey}" />
<Color x:Key="BackgroundColorKey">#EEF3F3F3</Color>
<SolidColorBrush x:Key="BackgroundBrushKey" Color="{StaticResource BackgroundColorKey}" />
<Color x:Key="BorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="BorderBrushKey" Color="{StaticResource BorderColorKey}" />
<Color x:Key="BorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="BorderBrushKey" Color="{StaticResource BorderColorKey}" />
<Color x:Key="ForegroundColorKey">#FF363636</Color>
<SolidColorBrush x:Key="ForegroundBrushKey" Color="{StaticResource ForegroundColorKey}" />
<Color x:Key="ForegroundColorKey">#FF363636</Color>
<SolidColorBrush x:Key="ForegroundBrushKey" Color="{StaticResource ForegroundColorKey}" />
<Color x:Key="SemiactiveBackgroundColorKey">#FFF5F5F8</Color>
<SolidColorBrush x:Key="SemiactiveBackgroundBrushKey" Color="#FFF5F5F8" />
<Color x:Key="SemiactiveBackgroundColorKey">#FFF5F5F8</Color>
<SolidColorBrush x:Key="SemiactiveBackgroundBrushKey" Color="#FFF5F5F8" />
<Color x:Key="SemiactiveBorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="SemiactiveBorderBrushKey" Color="#FFB9B9C0" />
<Color x:Key="SemiactiveBorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="SemiactiveBorderBrushKey" Color="#FFB9B9C0" />
<Color x:Key="SemiActiveForegroundColorKey">#FF101010</Color>
<SolidColorBrush x:Key="SemiActiveForegroundBrushKey" Color="#FF101010" />
<Color x:Key="SemiActiveForegroundColorKey">#FF101010</Color>
<SolidColorBrush x:Key="SemiActiveForegroundBrushKey" Color="#FF101010" />
<Color x:Key="ActiveBackgroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="ActiveBackgroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="ActiveBackgroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="ActiveBackgroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="ActiveBorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="ActiveBorderBrushKey" Color="#FFB9B9C0" />
<Color x:Key="ActiveBorderColorKey">#FFB9B9C0</Color>
<SolidColorBrush x:Key="ActiveBorderBrushKey" Color="#FFB9B9C0" />
<Color x:Key="ActiveForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="ActiveForegroundBrushKey" Color="#FF000000" />
<Color x:Key="ActiveForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="ActiveForegroundBrushKey" Color="#FF000000" />
<Color x:Key="InactiveBackgroundColorKey">#FFEFEFF2</Color>
<SolidColorBrush x:Key="InactiveBackgroundBrushKey" Color="#FFEFEFF2" />
<Color x:Key="InactiveBackgroundColorKey">#FFEFEFF2</Color>
<SolidColorBrush x:Key="InactiveBackgroundBrushKey" Color="#FFEFEFF2" />
<Color x:Key="InactiveBorderColorKey">#FFD7D7DE</Color>
<SolidColorBrush x:Key="InactiveBorderBrushKey" Color="#FFD7D7DE" />
<Color x:Key="InactiveBorderColorKey">#FFD7D7DE</Color>
<SolidColorBrush x:Key="InactiveBorderBrushKey" Color="#FFD7D7DE" />
<Color x:Key="InactiveForegroundColorKey">#FF808080</Color>
<SolidColorBrush x:Key="InactiveForegroundBrushKey" Color="#FF666666" />
<Color x:Key="InactiveForegroundColorKey">#FF808080</Color>
<SolidColorBrush x:Key="InactiveForegroundBrushKey" Color="#FF666666" />
<Color x:Key="HighlightBackgroundColorKey">#FFA5A5AC</Color>
<SolidColorBrush x:Key="HighlightBackgroundBrushKey" Color="#FFA5A5AC" />
<Color x:Key="HighlightBackgroundColorKey">#FFA5A5AC</Color>
<SolidColorBrush x:Key="HighlightBackgroundBrushKey" Color="#FFA5A5AC" />
<Color x:Key="HighlightBorderColorKey">#FFA5A5AC</Color>
<SolidColorBrush x:Key="HighlightBorderBrushKey" Color="#FFA5A5AC" />
<Color x:Key="HighlightBorderColorKey">#FFA5A5AC</Color>
<SolidColorBrush x:Key="HighlightBorderBrushKey" Color="#FFA5A5AC" />
<Color x:Key="HighlightForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="HighlightForegroundBrushKey" Color="#FF000000" />
<Color x:Key="HighlightForegroundColorKey">#FF000000</Color>
<SolidColorBrush x:Key="HighlightForegroundBrushKey" Color="#FF000000" />
<Color x:Key="Highlight2BackgroundColorKey">#FF696970</Color>
<SolidColorBrush x:Key="Highlight2BackgroundBrushKey" Color="#FF696970" />
<Color x:Key="Highlight2BackgroundColorKey">#FF696970</Color>
<SolidColorBrush x:Key="Highlight2BackgroundBrushKey" Color="#FF696970" />
<Color x:Key="Highlight2BorderColorKey">#FF696970</Color>
<SolidColorBrush x:Key="Highlight2BorderBrushKey" Color="#FF696970" />
<Color x:Key="Highlight2BorderColorKey">#FF696970</Color>
<SolidColorBrush x:Key="Highlight2BorderBrushKey" Color="#FF696970" />
<Color x:Key="Highlight2ForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="Highlight2ForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="Highlight2ForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="Highlight2ForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="Highlight3BackgroundColorKey">#FF4B4B52</Color>
<SolidColorBrush x:Key="Highlight3BackgroundBrushKey" Color="#FF4B4B52" />
<Color x:Key="Highlight3BackgroundColorKey">#FF4B4B52</Color>
<SolidColorBrush x:Key="Highlight3BackgroundBrushKey" Color="#FF4B4B52" />
<Color x:Key="Highlight3BorderColorKey">#FF4B4B52</Color>
<SolidColorBrush x:Key="Highlight3BorderBrushKey" Color="#FF4B4B52" />
<Color x:Key="Highlight3BorderColorKey">#FF4B4B52</Color>
<SolidColorBrush x:Key="Highlight3BorderBrushKey" Color="#FF4B4B52" />
<Color x:Key="Highlight3ForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="Highlight3ForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="Highlight3ForegroundColorKey">#FFFFFFFF</Color>
<SolidColorBrush x:Key="Highlight3ForegroundBrushKey" Color="#FFFFFFFF" />
<Color x:Key="LinkForegroundColorKey">#FF0000C8</Color>
<SolidColorBrush x:Key="LinkForegroundBrushKey" Color="#FF0000C8" />
<Color x:Key="LinkForegroundColorKey">#FF0000C8</Color>
<SolidColorBrush x:Key="LinkForegroundBrushKey" Color="#FF0000C8" />
<Color x:Key="ActiveLinkForegroundColorKey">#FF007ACC</Color>
<SolidColorBrush x:Key="ActiveLinkForegroundBrushKey" Color="#FF007ACC" />
<Color x:Key="ActiveLinkForegroundColorKey">#FF007ACC</Color>
<SolidColorBrush x:Key="ActiveLinkForegroundBrushKey" Color="#FF007ACC" />
<Color x:Key="ValidationErrorColorKey">#FFC80000</Color>
<SolidColorBrush x:Key="ValidationErrorBrushKey" Color="#FFC80000" />
<Color x:Key="ValidationErrorColorKey">#FFC80000</Color>
<SolidColorBrush x:Key="ValidationErrorBrushKey" Color="#FFC80000" />
<Color x:Key="SystemBaseLowColor">#33000000</Color>
<Color x:Key="SystemErrorTextColor">#C50500</Color>
<Color x:Key="SystemChromeMediumColor">#FFE6E6E6</Color>
<Color x:Key="SystemListLowColor">#19000000</Color>
<Color x:Key="SystemListMediumColor">#33000000</Color>
<Color x:Key="SystemAltHighColor">#FFFFFFFF</Color>
<Color x:Key="SystemBaseHighColor">#FF000000</Color>
<Color x:Key="SystemBaseMediumLowColor">#66000000</Color>
<Color x:Key="SystemChromeLowColor">#FFF2F2F2</Color>
<Color x:Key="SystemBaseMediumColor">#99000000</Color>
<Color x:Key="SystemChromeMediumLowColor">#FFF2F2F2</Color>
<Color x:Key="SystemBaseLowColor">#33000000</Color>
<Color x:Key="SystemErrorTextColor">#C50500</Color>
<Color x:Key="SystemChromeMediumColor">#FFE6E6E6</Color>
<Color x:Key="SystemListLowColor">#19000000</Color>
<Color x:Key="SystemListMediumColor">#33000000</Color>
<Color x:Key="SystemAltHighColor">#FFFFFFFF</Color>
<Color x:Key="SystemBaseHighColor">#FF000000</Color>
<Color x:Key="SystemBaseMediumLowColor">#66000000</Color>
<Color x:Key="SystemChromeLowColor">#FFF2F2F2</Color>
<Color x:Key="SystemBaseMediumColor">#99000000</Color>
<Color x:Key="SystemChromeMediumLowColor">#FFF2F2F2</Color>
<SolidColorBrush x:Key="SystemControlHighlightBaseLowBrush" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseHighBrush" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumBrush" Color="{StaticResource SystemChromeMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseMediumBrush" Color="{StaticResource SystemBaseMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="{StaticResource SystemChromeMediumLowColor}" />
</Style.Resources>
</Style>
<SolidColorBrush x:Key="SystemControlHighlightBaseLowBrush" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseHighBrush" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumBrush" Color="{StaticResource SystemChromeMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlHighlightListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundListLowBrush" Color="{StaticResource SystemListLowColor}" />
<SolidColorBrush x:Key="SystemControlForegroundBaseMediumBrush" Color="{StaticResource SystemBaseMediumColor}" />
<SolidColorBrush x:Key="SystemControlBackgroundChromeMediumLowBrush" Color="{StaticResource SystemChromeMediumLowColor}" />
</ResourceDictionary>
@@ -31,6 +31,13 @@
<ui:ColorPickerButton IsVisible="{ReflectionBinding #AccentCustom.IsChecked}"
IsEnabled="{ReflectionBinding #AccentCustom.IsChecked}"
VerticalAlignment="Center"
IsMoreButtonVisible="True"
UseSpectrum="True"
UseColorWheel="False"
UseColorTriangle="False"
UseColorPalette="False"
IsCompact="True"
ShowAcceptDismissButtons="True"
Color="{ReflectionBinding Source={x:Static ms:UISettings.ThemeAccent},Converter={StaticResource ColorStringToBrush},Path=Value, Mode=TwoWay}"/>
</StackPanel>
</DockPanel>