Bläddra i källkod

Merge branch 'master' into compiledbindings-themes

Tako 3 år sedan
förälder
incheckning
eb86044226
80 ändrade filer med 376 tillägg och 229 borttagningar
  1. 5 16
      samples/ControlCatalog/App.xaml.cs
  2. 2 0
      samples/ControlCatalog/MainView.xaml.cs
  3. 1 1
      src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs
  4. 2 2
      src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml
  5. 64 0
      src/Avalonia.Themes.Default/Accents/Base.xaml
  6. 18 59
      src/Avalonia.Themes.Default/Accents/BaseDark.xaml
  7. 19 63
      src/Avalonia.Themes.Default/Accents/BaseLight.xaml
  8. 1 4
      src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj
  9. 0 0
      src/Avalonia.Themes.Default/Controls/AutoCompleteBox.xaml
  10. 0 0
      src/Avalonia.Themes.Default/Controls/Button.xaml
  11. 0 0
      src/Avalonia.Themes.Default/Controls/ButtonSpinner.xaml
  12. 0 0
      src/Avalonia.Themes.Default/Controls/Calendar.xaml
  13. 0 0
      src/Avalonia.Themes.Default/Controls/CalendarButton.xaml
  14. 0 0
      src/Avalonia.Themes.Default/Controls/CalendarDatePicker.xaml
  15. 0 0
      src/Avalonia.Themes.Default/Controls/CalendarDayButton.xaml
  16. 0 0
      src/Avalonia.Themes.Default/Controls/CalendarItem.xaml
  17. 0 0
      src/Avalonia.Themes.Default/Controls/CaptionButtons.xaml
  18. 0 0
      src/Avalonia.Themes.Default/Controls/Carousel.xaml
  19. 0 0
      src/Avalonia.Themes.Default/Controls/CheckBox.xaml
  20. 0 0
      src/Avalonia.Themes.Default/Controls/ComboBox.xaml
  21. 0 0
      src/Avalonia.Themes.Default/Controls/ComboBoxItem.xaml
  22. 0 0
      src/Avalonia.Themes.Default/Controls/ContentControl.xaml
  23. 0 0
      src/Avalonia.Themes.Default/Controls/ContextMenu.xaml
  24. 0 0
      src/Avalonia.Themes.Default/Controls/DataValidationErrors.xaml
  25. 0 0
      src/Avalonia.Themes.Default/Controls/DatePicker.xaml
  26. 0 0
      src/Avalonia.Themes.Default/Controls/EmbeddableControlRoot.xaml
  27. 0 0
      src/Avalonia.Themes.Default/Controls/Expander.xaml
  28. 0 0
      src/Avalonia.Themes.Default/Controls/FlyoutPresenter.xaml
  29. 0 0
      src/Avalonia.Themes.Default/Controls/FocusAdorner.xaml
  30. 0 0
      src/Avalonia.Themes.Default/Controls/GridSplitter.xaml
  31. 0 0
      src/Avalonia.Themes.Default/Controls/ItemsControl.xaml
  32. 0 0
      src/Avalonia.Themes.Default/Controls/Label.xaml
  33. 0 0
      src/Avalonia.Themes.Default/Controls/ListBox.xaml
  34. 0 0
      src/Avalonia.Themes.Default/Controls/ListBoxItem.xaml
  35. 0 0
      src/Avalonia.Themes.Default/Controls/ManagedFileChooser.xaml
  36. 0 0
      src/Avalonia.Themes.Default/Controls/Menu.xaml
  37. 0 0
      src/Avalonia.Themes.Default/Controls/MenuFlyoutPresenter.xaml
  38. 0 0
      src/Avalonia.Themes.Default/Controls/MenuItem.xaml
  39. 0 0
      src/Avalonia.Themes.Default/Controls/NativeMenuBar.xaml
  40. 0 0
      src/Avalonia.Themes.Default/Controls/NotificationCard.xaml
  41. 0 0
      src/Avalonia.Themes.Default/Controls/NumericUpDown.xaml
  42. 0 0
      src/Avalonia.Themes.Default/Controls/OverlayPopupHost.xaml
  43. 0 0
      src/Avalonia.Themes.Default/Controls/PathIcon.xaml
  44. 0 0
      src/Avalonia.Themes.Default/Controls/PopupRoot.xaml
  45. 0 0
      src/Avalonia.Themes.Default/Controls/ProgressBar.xaml
  46. 0 0
      src/Avalonia.Themes.Default/Controls/RadioButton.xaml
  47. 0 0
      src/Avalonia.Themes.Default/Controls/RepeatButton.xaml
  48. 0 0
      src/Avalonia.Themes.Default/Controls/ScrollBar.xaml
  49. 0 0
      src/Avalonia.Themes.Default/Controls/ScrollViewer.xaml
  50. 0 0
      src/Avalonia.Themes.Default/Controls/Separator.xaml
  51. 0 0
      src/Avalonia.Themes.Default/Controls/Slider.xaml
  52. 0 0
      src/Avalonia.Themes.Default/Controls/SplitView.xaml
  53. 0 0
      src/Avalonia.Themes.Default/Controls/TabControl.xaml
  54. 0 0
      src/Avalonia.Themes.Default/Controls/TabItem.xaml
  55. 0 0
      src/Avalonia.Themes.Default/Controls/TabStrip.xaml
  56. 0 0
      src/Avalonia.Themes.Default/Controls/TabStripItem.xaml
  57. 0 0
      src/Avalonia.Themes.Default/Controls/TextBox.xaml
  58. 0 0
      src/Avalonia.Themes.Default/Controls/TimePicker.xaml
  59. 0 0
      src/Avalonia.Themes.Default/Controls/TitleBar.xaml
  60. 0 0
      src/Avalonia.Themes.Default/Controls/ToggleButton.xaml
  61. 0 0
      src/Avalonia.Themes.Default/Controls/ToggleSwitch.xaml
  62. 0 0
      src/Avalonia.Themes.Default/Controls/ToolTip.xaml
  63. 0 0
      src/Avalonia.Themes.Default/Controls/TreeView.xaml
  64. 0 0
      src/Avalonia.Themes.Default/Controls/TreeViewItem.xaml
  65. 0 0
      src/Avalonia.Themes.Default/Controls/UserControl.xaml
  66. 0 0
      src/Avalonia.Themes.Default/Controls/Window.xaml
  67. 0 0
      src/Avalonia.Themes.Default/Controls/WindowNotificationManager.xaml
  68. 59 59
      src/Avalonia.Themes.Default/DefaultTheme.xaml
  69. 0 1
      src/Avalonia.Themes.Default/DefaultTheme.xaml.cs
  70. 166 0
      src/Avalonia.Themes.Default/SimpleTheme.cs
  71. 8 0
      src/Avalonia.Themes.Default/SimpleThemeMode.cs
  72. 2 2
      src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml
  73. 1 12
      src/Skia/Avalonia.Skia/DrawingContextImpl.cs
  74. 1 1
      src/Skia/Avalonia.Skia/PlatformRenderInterface.cs
  75. 11 2
      src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs
  76. 1 0
      src/Windows/Avalonia.Win32/WindowImpl.cs
  77. 7 5
      tests/Avalonia.DesignerSupport.TestApp/App.xaml
  78. 1 1
      tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs
  79. 1 1
      tests/Avalonia.UnitTests/TestServices.cs
  80. 6 0
      tests/Avalonia.UnitTests/UnitTestApplication.cs

+ 5 - 16
samples/ControlCatalog/App.xaml.cs

@@ -5,6 +5,7 @@ using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
 using Avalonia.Markup.Xaml.Styling;
 using Avalonia.Styling;
+using Avalonia.Themes.Default;
 using Avalonia.Themes.Fluent;
 using ControlCatalog.ViewModels;
 
@@ -29,6 +30,8 @@ namespace ControlCatalog
 
         public static FluentTheme Fluent = new FluentTheme(new Uri("avares://ControlCatalog/Styles"));
 
+        public static SimpleTheme Default = new SimpleTheme(new Uri("avares://ControlCatalog/Styles"));
+
         public static Styles DefaultLight = new Styles
         {
             new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog"))
@@ -43,14 +46,7 @@ namespace ControlCatalog
             {
                 Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/BaseLight.xaml")
             },
-            new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog"))
-            {
-                Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml")
-            },
-            new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog"))
-            {
-                Source = new Uri("avares://Avalonia.Themes.Default/DefaultTheme.xaml")
-            }
+            Default
         };
 
         public static Styles DefaultDark = new Styles
@@ -67,14 +63,7 @@ namespace ControlCatalog
             {
                 Source = new Uri("avares://Avalonia.Themes.Fluent/Accents/BaseDark.xaml")
             },
-            new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog"))
-            {
-                Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseDark.xaml")
-            },
-            new StyleInclude(new Uri("resm:Styles?assembly=ControlCatalog"))
-            {
-                Source = new Uri("avares://Avalonia.Themes.Default/DefaultTheme.xaml")
-            }
+            Default
         };
 
         public override void Initialize()

+ 2 - 0
samples/ControlCatalog/MainView.xaml.cs

@@ -63,11 +63,13 @@ namespace ControlCatalog
                     }
                     else if (theme == CatalogTheme.DefaultLight)
                     {
+                        App.Default.Mode = Avalonia.Themes.Default.SimpleThemeMode.Light;
                         Application.Current.Styles[0] = App.DefaultLight;
                         Application.Current.Styles[1] = App.DataGridDefault;
                     }
                     else if (theme == CatalogTheme.DefaultDark)
                     {
+                        App.Default.Mode = Avalonia.Themes.Default.SimpleThemeMode.Dark;
                         Application.Current.Styles[0] = App.DefaultDark;
                         Application.Current.Styles[1] = App.DataGridDefault;
                     }

+ 1 - 1
src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs

@@ -101,7 +101,7 @@ namespace Avalonia.Controls.Platform
                 root.Deactivated -= WindowDeactivated;
             }
             
-            if (_root is TopLevel tl)
+            if (_root is TopLevel tl && tl.PlatformImpl != null)
                 tl.PlatformImpl.LostFocus -= TopLevelLostPlatformFocus;
 
             _inputManagerSubscription?.Dispose();

+ 2 - 2
src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml

@@ -2,6 +2,7 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:views="clr-namespace:Avalonia.Diagnostics.Views"
         xmlns:diag="clr-namespace:Avalonia.Diagnostics"
+        xmlns:default="using:Avalonia.Themes.Default"
         Title="Avalonia DevTools"
         x:Class="Avalonia.Diagnostics.Views.MainWindow">
   <Window.DataTemplates>
@@ -9,8 +10,7 @@
   </Window.DataTemplates>
   
   <Window.Styles>
-    <StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/>
-    <StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/>
+    <default:SimpleTheme Mode="Light"/>
     <StyleInclude Source="resm:Avalonia.Controls.DataGrid.Themes.Default.xaml?assembly=Avalonia.Controls.DataGrid"/>
     <Style Selector="DataGrid ContextMenu">
       <Setter Property="Foreground" Value="Black"/>

+ 64 - 0
src/Avalonia.Themes.Default/Accents/Base.xaml

@@ -0,0 +1,64 @@
+<Style
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:sys="clr-namespace:System;assembly=netstandard">
+    <Style.Resources>
+        <Color x:Key="ThemeAccentColor">#CC119EDA</Color>
+        <Color x:Key="ThemeAccentColor2">#99119EDA</Color>
+        <Color x:Key="ThemeAccentColor3">#66119EDA</Color>
+        <Color x:Key="ThemeAccentColor4">#33119EDA</Color>
+        <Color x:Key="ThemeForegroundLowColor">#FF808080</Color>
+        <Color x:Key="HighlightForegroundColor">#FFFFFFFF</Color>
+        <Color x:Key="ErrorColor">#FFFF0000</Color>
+        <Color x:Key="ErrorLowColor">#10FF0000</Color>
+        <SolidColorBrush x:Key="HighlightForegroundBrush" Color="{StaticResource HighlightForegroundColor}" />
+        <SolidColorBrush x:Key="ThemeForegroundLowBrush" Color="{StaticResource ThemeForegroundLowColor}" />
+        <SolidColorBrush x:Key="ThemeAccentBrush2" Color="{StaticResource ThemeAccentColor2}" />
+        <SolidColorBrush x:Key="ThemeAccentBrush3" Color="{StaticResource ThemeAccentColor3}" />
+        <SolidColorBrush x:Key="ThemeAccentBrush4" Color="{StaticResource ThemeAccentColor4}" />
+        <SolidColorBrush x:Key="ThemeAccentBrush" Color="{StaticResource ThemeAccentColor}" />
+        <SolidColorBrush x:Key="ErrorBrush" Color="{StaticResource ErrorColor}" />
+        <SolidColorBrush x:Key="ErrorLowBrush" Color="{StaticResource ErrorLowColor}" />
+        <SolidColorBrush
+            x:Key="NotificationCardBackgroundBrush"
+            Opacity="0.75"
+            Color="#444444" />
+        <SolidColorBrush
+            x:Key="NotificationCardInformationBackgroundBrush"
+            Opacity="0.75"
+            Color="#007ACC" />
+        <SolidColorBrush
+            x:Key="NotificationCardSuccessBackgroundBrush"
+            Opacity="0.75"
+            Color="#1F9E45" />
+        <SolidColorBrush
+            x:Key="NotificationCardWarningBackgroundBrush"
+            Opacity="0.75"
+            Color="#FDB328" />
+        <SolidColorBrush
+            x:Key="NotificationCardErrorBackgroundBrush"
+            Opacity="0.75"
+            Color="#BD202C" />
+        <SolidColorBrush x:Key="ThemeControlTransparentBrush" Color="Transparent" />
+        <SolidColorBrush
+            x:Key="DatePickerFlyoutPresenterHighlightFill"
+            Opacity="0.4"
+            Color="{StaticResource ThemeAccentColor}" />
+        <SolidColorBrush
+            x:Key="TimePickerFlyoutPresenterHighlightFill"
+            Opacity="0.4"
+            Color="{StaticResource ThemeAccentColor}" />
+        <Thickness x:Key="ThemeBorderThickness">1</Thickness>
+        <sys:Double x:Key="ThemeDisabledOpacity">0.5</sys:Double>
+
+        <sys:Double x:Key="FontSizeSmall">10</sys:Double>
+        <sys:Double x:Key="FontSizeNormal">12</sys:Double>
+        <sys:Double x:Key="FontSizeLarge">16</sys:Double>
+
+        <sys:Double x:Key="ScrollBarThickness">18</sys:Double>
+        <sys:Double x:Key="ScrollBarThumbThickness">8</sys:Double>
+
+        <sys:Double x:Key="IconElementThemeHeight">20</sys:Double>
+        <sys:Double x:Key="IconElementThemeWidth">20</sys:Double>
+    </Style.Resources>
+</Style>

+ 18 - 59
src/Avalonia.Themes.Default/Accents/BaseDark.xaml

@@ -1,13 +1,9 @@
-<Style xmlns="https://github.com/avaloniaui"
-       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-       xmlns:sys="clr-namespace:System;assembly=netstandard">
+<Style
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:sys="clr-namespace:System;assembly=netstandard">
     <Style.Resources>
 
-        <Color x:Key="ThemeAccentColor">#CC119EDA</Color>
-        <Color x:Key="ThemeAccentColor2">#99119EDA</Color>
-        <Color x:Key="ThemeAccentColor3">#66119EDA</Color>
-        <Color x:Key="ThemeAccentColor4">#33119EDA</Color>
-
         <Color x:Key="ThemeBackgroundColor">#FF282828</Color>
         <Color x:Key="ThemeBorderLowColor">#FF505050</Color>
         <Color x:Key="ThemeBorderMidColor">#FF808080</Color>
@@ -21,59 +17,22 @@
         <Color x:Key="ThemeControlHighlightMidColor">#FF828282</Color>
         <Color x:Key="ThemeControlHighlightHighColor">#FF505050</Color>
         <Color x:Key="ThemeForegroundColor">#FFDEDEDE</Color>
-        <Color x:Key="ThemeForegroundLowColor">#FF808080</Color>
-
         <Color x:Key="HighlightColor">#FF119EDA</Color>
-        <Color x:Key="HighlightForegroundColor">#FFFFFFFF</Color>
-        <Color x:Key="ErrorColor">#FFFF0000</Color>
-        <Color x:Key="ErrorLowColor">#10FF0000</Color>
-
-        <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{DynamicResource ThemeBackgroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderLowBrush" Color="{DynamicResource ThemeBorderLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderMidBrush" Color="{DynamicResource ThemeBorderMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderHighBrush" Color="{DynamicResource ThemeBorderHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlLowBrush" Color="{DynamicResource ThemeControlLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlMidBrush" Color="{DynamicResource ThemeControlMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlMidHighBrush" Color="{DynamicResource ThemeControlMidHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighBrush" Color="{DynamicResource ThemeControlHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlVeryHighBrush" Color="{DynamicResource ThemeControlVeryHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightLowBrush" Color="{DynamicResource ThemeControlHighlightLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightMidBrush" Color="{DynamicResource ThemeControlHighlightMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightHighBrush" Color="{DynamicResource ThemeControlHighlightHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeForegroundBrush" Color="{DynamicResource ThemeForegroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeForegroundLowBrush" Color="{DynamicResource ThemeForegroundLowColor}"></SolidColorBrush>
-
-        <SolidColorBrush x:Key="HighlightBrush" Color="{DynamicResource HighlightColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="HighlightForegroundBrush" Color="{DynamicResource HighlightForegroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush" Color="{DynamicResource ThemeAccentColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush2" Color="{DynamicResource ThemeAccentColor2}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush3" Color="{DynamicResource ThemeAccentColor3}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush4" Color="{DynamicResource ThemeAccentColor4}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ErrorBrush" Color="{DynamicResource ErrorColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ErrorLowBrush" Color="{DynamicResource ErrorLowColor}"></SolidColorBrush>
-
-        <SolidColorBrush x:Key="NotificationCardBackgroundBrush" Color="#444444" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardInformationBackgroundBrush" Color="#007ACC" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardSuccessBackgroundBrush" Color="#1F9E45" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardWarningBackgroundBrush" Color="#FDB328" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardErrorBackgroundBrush" Color="#BD202C" Opacity="0.75"/>
-
-        <SolidColorBrush x:Key="DatePickerFlyoutPresenterHighlightFill" Color="{DynamicResource ThemeAccentColor}" Opacity="0.4" />
-        <SolidColorBrush x:Key="TimePickerFlyoutPresenterHighlightFill" Color="{DynamicResource ThemeAccentColor}" Opacity="0.4" />
-
-        <SolidColorBrush x:Key="ThemeControlTransparentBrush" Color="Transparent" />
-      
-        <Thickness x:Key="ThemeBorderThickness">1,1,1,1</Thickness>
-        <sys:Double x:Key="ThemeDisabledOpacity">0.5</sys:Double>
-
-        <sys:Double x:Key="FontSizeSmall">10</sys:Double>
-        <sys:Double x:Key="FontSizeNormal">12</sys:Double>
-        <sys:Double x:Key="FontSizeLarge">16</sys:Double>
 
-        <sys:Double x:Key="ScrollBarThickness">18</sys:Double>
-        <sys:Double x:Key="ScrollBarThumbThickness">8</sys:Double>
+        <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{StaticResource ThemeBackgroundColor}" />
+        <SolidColorBrush x:Key="ThemeBorderLowBrush" Color="{StaticResource ThemeBorderLowColor}" />
+        <SolidColorBrush x:Key="ThemeBorderMidBrush" Color="{StaticResource ThemeBorderMidColor}" />
+        <SolidColorBrush x:Key="ThemeBorderHighBrush" Color="{StaticResource ThemeBorderHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlLowBrush" Color="{StaticResource ThemeControlLowColor}" />
+        <SolidColorBrush x:Key="ThemeControlMidBrush" Color="{StaticResource ThemeControlMidColor}" />
+        <SolidColorBrush x:Key="ThemeControlMidHighBrush" Color="{StaticResource ThemeControlMidHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighBrush" Color="{StaticResource ThemeControlHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlVeryHighBrush" Color="{StaticResource ThemeControlVeryHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightLowBrush" Color="{StaticResource ThemeControlHighlightLowColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightMidBrush" Color="{StaticResource ThemeControlHighlightMidColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightHighBrush" Color="{StaticResource ThemeControlHighlightHighColor}" />
+        <SolidColorBrush x:Key="ThemeForegroundBrush" Color="{StaticResource ThemeForegroundColor}" />
+        <SolidColorBrush x:Key="HighlightBrush" Color="{StaticResource HighlightColor}" />
 
-        <sys:Double x:Key="IconElementThemeHeight">20</sys:Double>
-        <sys:Double x:Key="IconElementThemeWidth">20</sys:Double>
     </Style.Resources>
 </Style>

+ 19 - 63
src/Avalonia.Themes.Default/Accents/BaseLight.xaml

@@ -1,82 +1,38 @@
-<Style xmlns="https://github.com/avaloniaui"
-       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-       xmlns:sys="clr-namespace:System;assembly=netstandard">
+<Style
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:sys="clr-namespace:System;assembly=netstandard">
     <Style.Resources>
 
-        <Color x:Key="ThemeAccentColor">#CC119EDA</Color>
-        <Color x:Key="ThemeAccentColor2">#99119EDA</Color>
-        <Color x:Key="ThemeAccentColor3">#66119EDA</Color>
-        <Color x:Key="ThemeAccentColor4">#33119EDA</Color>
-
         <Color x:Key="ThemeBackgroundColor">#FFFFFFFF</Color>
         <Color x:Key="ThemeBorderLowColor">#FFAAAAAA</Color>
         <Color x:Key="ThemeBorderMidColor">#FF888888</Color>
         <Color x:Key="ThemeBorderHighColor">#FF333333</Color>
-      
-      
         <Color x:Key="ThemeControlLowColor">#FF868999</Color>
         <Color x:Key="ThemeControlMidColor">#FFF5F5F5</Color>
         <Color x:Key="ThemeControlMidHighColor">#FFC2C3C9</Color>
         <Color x:Key="ThemeControlHighColor">#FF686868</Color>
         <Color x:Key="ThemeControlVeryHighColor">#FF5B5B5B</Color>
-
         <Color x:Key="ThemeControlHighlightLowColor">#FFF0F0F0</Color>
         <Color x:Key="ThemeControlHighlightMidColor">#FFD0D0D0</Color>
         <Color x:Key="ThemeControlHighlightHighColor">#FF808080</Color>
         <Color x:Key="ThemeForegroundColor">#FF000000</Color>
-        <Color x:Key="ThemeForegroundLowColor">#FF808080</Color>
-
         <Color x:Key="HighlightColor">#FF086F9E</Color>
-        <Color x:Key="HighlightForegroundColor">#FFFFFFFF</Color>
-        <Color x:Key="ErrorColor">#FFFF0000</Color>
-        <Color x:Key="ErrorLowColor">#10FF0000</Color>
-
-        <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{DynamicResource ThemeBackgroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderLowBrush" Color="{DynamicResource ThemeBorderLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderMidBrush" Color="{DynamicResource ThemeBorderMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeBorderHighBrush" Color="{DynamicResource ThemeBorderHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlLowBrush" Color="{DynamicResource ThemeControlLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlMidBrush" Color="{DynamicResource ThemeControlMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlMidHighBrush" Color="{DynamicResource ThemeControlMidHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighBrush" Color="{DynamicResource ThemeControlHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlVeryHighBrush" Color="{DynamicResource ThemeControlVeryHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightLowBrush" Color="{DynamicResource ThemeControlHighlightLowColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightMidBrush" Color="{DynamicResource ThemeControlHighlightMidColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeControlHighlightHighBrush" Color="{DynamicResource ThemeControlHighlightHighColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeForegroundBrush" Color="{DynamicResource ThemeForegroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeForegroundLowBrush" Color="{DynamicResource ThemeForegroundLowColor}"></SolidColorBrush>
-
-        <SolidColorBrush x:Key="HighlightBrush" Color="{DynamicResource HighlightColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="HighlightForegroundBrush" Color="{DynamicResource HighlightForegroundColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush" Color="{DynamicResource ThemeAccentColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush2" Color="{DynamicResource ThemeAccentColor2}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush3" Color="{DynamicResource ThemeAccentColor3}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ThemeAccentBrush4" Color="{DynamicResource ThemeAccentColor4}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ErrorBrush" Color="{DynamicResource ErrorColor}"></SolidColorBrush>
-        <SolidColorBrush x:Key="ErrorLowBrush" Color="{DynamicResource ErrorLowColor}"></SolidColorBrush>
-
-        <SolidColorBrush x:Key="NotificationCardBackgroundBrush" Color="#444444" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardInformationBackgroundBrush" Color="#007ACC" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardSuccessBackgroundBrush" Color="#1F9E45" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardWarningBackgroundBrush" Color="#FDB328" Opacity="0.75"/>
-        <SolidColorBrush x:Key="NotificationCardErrorBackgroundBrush" Color="#BD202C" Opacity="0.75"/>
-
-        <SolidColorBrush x:Key="DatePickerFlyoutPresenterHighlightFill" Color="{DynamicResource ThemeAccentColor}" Opacity="0.4" />
-        <SolidColorBrush x:Key="TimePickerFlyoutPresenterHighlightFill" Color="{DynamicResource ThemeAccentColor}" Opacity="0.4" />
-      
-        <SolidColorBrush x:Key="ThemeControlTransparentBrush" Color="Transparent" />
-
-        <Thickness x:Key="ThemeBorderThickness">1</Thickness>
-        <sys:Double x:Key="ThemeDisabledOpacity">0.5</sys:Double>
-
-        <sys:Double x:Key="FontSizeSmall">10</sys:Double>
-        <sys:Double x:Key="FontSizeNormal">12</sys:Double>
-        <sys:Double x:Key="FontSizeLarge">16</sys:Double>
-
-        <sys:Double x:Key="ScrollBarThickness">18</sys:Double>
-        <sys:Double x:Key="ScrollBarThumbThickness">8</sys:Double>
 
-        <sys:Double x:Key="IconElementThemeHeight">20</sys:Double>
-        <sys:Double x:Key="IconElementThemeWidth">20</sys:Double>
+        <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{StaticResource ThemeBackgroundColor}" />
+        <SolidColorBrush x:Key="ThemeBorderLowBrush" Color="{StaticResource ThemeBorderLowColor}" />
+        <SolidColorBrush x:Key="ThemeBorderMidBrush" Color="{StaticResource ThemeBorderMidColor}" />
+        <SolidColorBrush x:Key="ThemeBorderHighBrush" Color="{StaticResource ThemeBorderHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlLowBrush" Color="{StaticResource ThemeControlLowColor}" />
+        <SolidColorBrush x:Key="ThemeControlMidBrush" Color="{StaticResource ThemeControlMidColor}" />
+        <SolidColorBrush x:Key="ThemeControlMidHighBrush" Color="{StaticResource ThemeControlMidHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighBrush" Color="{StaticResource ThemeControlHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlVeryHighBrush" Color="{StaticResource ThemeControlVeryHighColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightLowBrush" Color="{StaticResource ThemeControlHighlightLowColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightMidBrush" Color="{StaticResource ThemeControlHighlightMidColor}" />
+        <SolidColorBrush x:Key="ThemeControlHighlightHighBrush" Color="{StaticResource ThemeControlHighlightHighColor}" />
+        <SolidColorBrush x:Key="ThemeForegroundBrush" Color="{StaticResource ThemeForegroundColor}" />
+
+        <SolidColorBrush x:Key="HighlightBrush" Color="{StaticResource HighlightColor}" />
     </Style.Resources>
 </Style>

+ 1 - 4
src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj

@@ -13,10 +13,7 @@
     <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj" />
     <ProjectReference Include="..\Avalonia.Dialogs\Avalonia.Dialogs.csproj" />
-    <AvaloniaResource Include="DefaultTheme.xaml" />
-    <AvaloniaResource Include="Accents/*.xaml" />
-    <!-- Compatibility with old apps, probably need to replace with AvaloniaResource -->
-    <EmbeddedResource Include="**/*.xaml" />
+    <AvaloniaResource Include="**/*.xaml" />
   </ItemGroup>
   <Import Project="..\..\build\BuildTargets.targets" />
   <Import Project="..\..\build\Rx.props" />

+ 0 - 0
src/Avalonia.Themes.Default/AutoCompleteBox.xaml → src/Avalonia.Themes.Default/Controls/AutoCompleteBox.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Button.xaml → src/Avalonia.Themes.Default/Controls/Button.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ButtonSpinner.xaml → src/Avalonia.Themes.Default/Controls/ButtonSpinner.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Calendar.xaml → src/Avalonia.Themes.Default/Controls/Calendar.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CalendarButton.xaml → src/Avalonia.Themes.Default/Controls/CalendarButton.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CalendarDatePicker.xaml → src/Avalonia.Themes.Default/Controls/CalendarDatePicker.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CalendarDayButton.xaml → src/Avalonia.Themes.Default/Controls/CalendarDayButton.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CalendarItem.xaml → src/Avalonia.Themes.Default/Controls/CalendarItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CaptionButtons.xaml → src/Avalonia.Themes.Default/Controls/CaptionButtons.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Carousel.xaml → src/Avalonia.Themes.Default/Controls/Carousel.xaml


+ 0 - 0
src/Avalonia.Themes.Default/CheckBox.xaml → src/Avalonia.Themes.Default/Controls/CheckBox.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ComboBox.xaml → src/Avalonia.Themes.Default/Controls/ComboBox.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ComboBoxItem.xaml → src/Avalonia.Themes.Default/Controls/ComboBoxItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ContentControl.xaml → src/Avalonia.Themes.Default/Controls/ContentControl.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ContextMenu.xaml → src/Avalonia.Themes.Default/Controls/ContextMenu.xaml


+ 0 - 0
src/Avalonia.Themes.Default/DataValidationErrors.xaml → src/Avalonia.Themes.Default/Controls/DataValidationErrors.xaml


+ 0 - 0
src/Avalonia.Themes.Default/DatePicker.xaml → src/Avalonia.Themes.Default/Controls/DatePicker.xaml


+ 0 - 0
src/Avalonia.Themes.Default/EmbeddableControlRoot.xaml → src/Avalonia.Themes.Default/Controls/EmbeddableControlRoot.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Expander.xaml → src/Avalonia.Themes.Default/Controls/Expander.xaml


+ 0 - 0
src/Avalonia.Themes.Default/FlyoutPresenter.xaml → src/Avalonia.Themes.Default/Controls/FlyoutPresenter.xaml


+ 0 - 0
src/Avalonia.Themes.Default/FocusAdorner.xaml → src/Avalonia.Themes.Default/Controls/FocusAdorner.xaml


+ 0 - 0
src/Avalonia.Themes.Default/GridSplitter.xaml → src/Avalonia.Themes.Default/Controls/GridSplitter.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ItemsControl.xaml → src/Avalonia.Themes.Default/Controls/ItemsControl.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Label.xaml → src/Avalonia.Themes.Default/Controls/Label.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ListBox.xaml → src/Avalonia.Themes.Default/Controls/ListBox.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ListBoxItem.xaml → src/Avalonia.Themes.Default/Controls/ListBoxItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ManagedFileChooser.xaml → src/Avalonia.Themes.Default/Controls/ManagedFileChooser.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Menu.xaml → src/Avalonia.Themes.Default/Controls/Menu.xaml


+ 0 - 0
src/Avalonia.Themes.Default/MenuFlyoutPresenter.xaml → src/Avalonia.Themes.Default/Controls/MenuFlyoutPresenter.xaml


+ 0 - 0
src/Avalonia.Themes.Default/MenuItem.xaml → src/Avalonia.Themes.Default/Controls/MenuItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/NativeMenuBar.xaml → src/Avalonia.Themes.Default/Controls/NativeMenuBar.xaml


+ 0 - 0
src/Avalonia.Themes.Default/NotificationCard.xaml → src/Avalonia.Themes.Default/Controls/NotificationCard.xaml


+ 0 - 0
src/Avalonia.Themes.Default/NumericUpDown.xaml → src/Avalonia.Themes.Default/Controls/NumericUpDown.xaml


+ 0 - 0
src/Avalonia.Themes.Default/OverlayPopupHost.xaml → src/Avalonia.Themes.Default/Controls/OverlayPopupHost.xaml


+ 0 - 0
src/Avalonia.Themes.Default/PathIcon.xaml → src/Avalonia.Themes.Default/Controls/PathIcon.xaml


+ 0 - 0
src/Avalonia.Themes.Default/PopupRoot.xaml → src/Avalonia.Themes.Default/Controls/PopupRoot.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ProgressBar.xaml → src/Avalonia.Themes.Default/Controls/ProgressBar.xaml


+ 0 - 0
src/Avalonia.Themes.Default/RadioButton.xaml → src/Avalonia.Themes.Default/Controls/RadioButton.xaml


+ 0 - 0
src/Avalonia.Themes.Default/RepeatButton.xaml → src/Avalonia.Themes.Default/Controls/RepeatButton.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ScrollBar.xaml → src/Avalonia.Themes.Default/Controls/ScrollBar.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ScrollViewer.xaml → src/Avalonia.Themes.Default/Controls/ScrollViewer.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Separator.xaml → src/Avalonia.Themes.Default/Controls/Separator.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Slider.xaml → src/Avalonia.Themes.Default/Controls/Slider.xaml


+ 0 - 0
src/Avalonia.Themes.Default/SplitView.xaml → src/Avalonia.Themes.Default/Controls/SplitView.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TabControl.xaml → src/Avalonia.Themes.Default/Controls/TabControl.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TabItem.xaml → src/Avalonia.Themes.Default/Controls/TabItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TabStrip.xaml → src/Avalonia.Themes.Default/Controls/TabStrip.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TabStripItem.xaml → src/Avalonia.Themes.Default/Controls/TabStripItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TextBox.xaml → src/Avalonia.Themes.Default/Controls/TextBox.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TimePicker.xaml → src/Avalonia.Themes.Default/Controls/TimePicker.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TitleBar.xaml → src/Avalonia.Themes.Default/Controls/TitleBar.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ToggleButton.xaml → src/Avalonia.Themes.Default/Controls/ToggleButton.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ToggleSwitch.xaml → src/Avalonia.Themes.Default/Controls/ToggleSwitch.xaml


+ 0 - 0
src/Avalonia.Themes.Default/ToolTip.xaml → src/Avalonia.Themes.Default/Controls/ToolTip.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TreeView.xaml → src/Avalonia.Themes.Default/Controls/TreeView.xaml


+ 0 - 0
src/Avalonia.Themes.Default/TreeViewItem.xaml → src/Avalonia.Themes.Default/Controls/TreeViewItem.xaml


+ 0 - 0
src/Avalonia.Themes.Default/UserControl.xaml → src/Avalonia.Themes.Default/Controls/UserControl.xaml


+ 0 - 0
src/Avalonia.Themes.Default/Window.xaml → src/Avalonia.Themes.Default/Controls/Window.xaml


+ 0 - 0
src/Avalonia.Themes.Default/WindowNotificationManager.xaml → src/Avalonia.Themes.Default/Controls/WindowNotificationManager.xaml


+ 59 - 59
src/Avalonia.Themes.Default/DefaultTheme.xaml

@@ -2,65 +2,65 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         x:Class="Avalonia.Themes.Default.DefaultTheme">
   <!-- Define ToolTip first so its styles can be overriden by other controls (e.g. TextBox) -->
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ToolTip.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.DataValidationErrors.xaml?assembly=Avalonia.Themes.Default"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ToolTip.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/DataValidationErrors.xaml"/>
 
-  <StyleInclude Source="resm:Avalonia.Themes.Default.FocusAdorner.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Button.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Carousel.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CheckBox.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CaptionButtons.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ComboBox.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ComboBoxItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ContentControl.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Label.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.GridSplitter.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ItemsControl.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ListBox.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ListBoxItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Menu.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ContextMenu.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.MenuItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.OverlayPopupHost.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.PathIcon.xaml?assembly=Avalonia.Themes.Default" />
-  <StyleInclude Source="resm:Avalonia.Themes.Default.PopupRoot.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ProgressBar.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.RadioButton.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.RepeatButton.xaml?assembly=Avalonia.Themes.Default" />
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Separator.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Slider.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ScrollBar.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ScrollViewer.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TabStrip.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TabStripItem.xaml?assembly=Avalonia.Themes.Default"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/FocusAdorner.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Button.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Carousel.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CheckBox.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CaptionButtons.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ComboBox.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ComboBoxItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ContentControl.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Label.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/GridSplitter.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ItemsControl.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ListBox.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ListBoxItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Menu.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ContextMenu.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/MenuItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/OverlayPopupHost.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/PathIcon.xaml" />
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/PopupRoot.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ProgressBar.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/RadioButton.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/RepeatButton.xaml" />
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Separator.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Slider.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ScrollBar.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ScrollViewer.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TabStrip.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TabStripItem.xaml"/>
   <!-- TabControl needs to come after TabStrip as it redefines the inner TabStrip.ItemsPanel-->
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TabControl.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TabItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TextBox.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ToggleButton.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Expander.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TitleBar.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TreeView.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TreeViewItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.UserControl.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Window.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.EmbeddableControlRoot.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CalendarButton.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CalendarDayButton.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CalendarItem.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.Calendar.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.CalendarDatePicker.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ButtonSpinner.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.NumericUpDown.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.AutoCompleteBox.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.WindowNotificationManager.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.NotificationCard.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.NativeMenuBar.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ToggleSwitch.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.SplitView.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.DatePicker.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.TimePicker.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.FlyoutPresenter.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.MenuFlyoutPresenter.xaml?assembly=Avalonia.Themes.Default"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Default.ManagedFileChooser.xaml?assembly=Avalonia.Themes.Default"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TabControl.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TabItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TextBox.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ToggleButton.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Expander.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TitleBar.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TreeView.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TreeViewItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/UserControl.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Window.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/EmbeddableControlRoot.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CalendarButton.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CalendarDayButton.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CalendarItem.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/Calendar.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/CalendarDatePicker.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ButtonSpinner.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/NumericUpDown.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/AutoCompleteBox.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/WindowNotificationManager.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/NotificationCard.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/NativeMenuBar.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ToggleSwitch.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/SplitView.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/DatePicker.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/TimePicker.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/FlyoutPresenter.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/MenuFlyoutPresenter.xaml"/>
+  <StyleInclude Source="avares://Avalonia.Themes.Default/Controls/ManagedFileChooser.xaml"/>
 </Styles>

+ 0 - 1
src/Avalonia.Themes.Default/DefaultTheme.xaml.cs

@@ -1,4 +1,3 @@
-using Avalonia.Markup.Xaml;
 using Avalonia.Styling;
 
 namespace Avalonia.Themes.Default

+ 166 - 0
src/Avalonia.Themes.Default/SimpleTheme.cs

@@ -0,0 +1,166 @@
+using System;
+using System.Collections.Generic;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using Avalonia.Markup.Xaml.Styling;
+using Avalonia.Styling;
+#nullable enable
+
+namespace Avalonia.Themes.Default
+{
+    public class SimpleTheme : AvaloniaObject, IStyle, IResourceProvider
+    {
+        public static readonly StyledProperty<SimpleThemeMode> ModeProperty =
+        AvaloniaProperty.Register<SimpleTheme, SimpleThemeMode>(nameof(Mode));
+
+        private readonly Uri _baseUri;
+        private bool _isLoading;
+        private IStyle? _loaded;
+        private Styles _sharedStyles = new();
+        private Styles _simpleDark = new();
+        private Styles _simpleLight = new();
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SimpleTheme"/> class.
+        /// </summary>
+        /// <param name="baseUri">The base URL for the XAML context.</param>
+        public SimpleTheme(Uri baseUri)
+        {
+            _baseUri = baseUri;
+            InitStyles(_baseUri);
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SimpleTheme"/> class.
+        /// </summary>
+        /// <param name="serviceProvider">The XAML service provider.</param>
+        public SimpleTheme(IServiceProvider serviceProvider)
+        {
+            var service = serviceProvider.GetService(typeof(IUriContext));
+            if (service == null)
+            {
+                throw new Exception("There is no service object of type IUriContext!");
+            }
+            _baseUri = ((IUriContext)service).BaseUri;
+            InitStyles(_baseUri);
+        }
+
+        public event EventHandler OwnerChanged
+        {
+            add
+            {
+                if (Loaded is IResourceProvider rp)
+                {
+                    rp.OwnerChanged += value;
+                }
+            }
+            remove
+            {
+                if (Loaded is IResourceProvider rp)
+                {
+                    rp.OwnerChanged -= value;
+                }
+            }
+        }
+
+        IReadOnlyList<IStyle> IStyle.Children => _loaded?.Children ?? Array.Empty<IStyle>();
+
+        bool IResourceNode.HasResources => (Loaded as IResourceProvider)?.HasResources ?? false;
+
+        public IStyle Loaded
+        {
+            get
+            {
+                if (_loaded == null)
+                {
+                    _isLoading = true;
+
+                    if (Mode == SimpleThemeMode.Light)
+                    {
+                        _loaded = new Styles { _sharedStyles, _simpleLight };
+                    }
+                    else if (Mode == SimpleThemeMode.Dark)
+                    {
+                        _loaded = new Styles { _sharedStyles, _simpleDark };
+                    }
+                    _isLoading = false;
+                }
+
+                return _loaded!;
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the mode of the fluent theme (light, dark).
+        /// </summary>
+        public SimpleThemeMode Mode
+        {
+            get => GetValue(ModeProperty);
+            set => SetValue(ModeProperty, value);
+        }
+        public IResourceHost? Owner => (Loaded as IResourceProvider)?.Owner;
+
+        void IResourceProvider.AddOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.AddOwner(owner);
+
+        void IResourceProvider.RemoveOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.RemoveOwner(owner);
+
+        public SelectorMatchResult TryAttach(IStyleable target, IStyleHost? host) => Loaded.TryAttach(target, host);
+
+        public bool TryGetResource(object key, out object? value)
+        {
+            if (!_isLoading && Loaded is IResourceProvider p)
+            {
+                return p.TryGetResource(key, out value);
+            }
+
+            value = null;
+            return false;
+        }
+
+        protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
+        {
+            base.OnPropertyChanged(change);
+            if (change.Property == ModeProperty)
+            {
+                if (Mode == SimpleThemeMode.Dark)
+                {
+                    (Loaded as Styles)![1] = _simpleDark[0];
+                }
+                else
+                {
+                    (Loaded as Styles)![1] = _simpleLight[0];
+                }
+            }
+        }
+
+        private void InitStyles(Uri baseUri)
+        {
+            _sharedStyles = new Styles
+            {
+                new StyleInclude(baseUri)
+                {
+                    Source = new Uri("avares://Avalonia.Themes.Default/DefaultTheme.xaml")
+                },
+                new StyleInclude(baseUri)
+                {
+                    Source = new Uri("avares://Avalonia.Themes.Default/Accents/Base.xaml")
+                }
+            };
+            _simpleLight = new Styles
+            {
+                new StyleInclude(baseUri)
+                {
+                    Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml")
+                }
+            };
+
+            _simpleDark = new Styles
+            {
+                new StyleInclude(baseUri)
+                {
+                    Source = new Uri("avares://Avalonia.Themes.Default/Accents/BaseDark.xaml")
+                }
+            };
+        }
+
+    }
+}

+ 8 - 0
src/Avalonia.Themes.Default/SimpleThemeMode.cs

@@ -0,0 +1,8 @@
+namespace Avalonia.Themes.Default
+{
+    public enum SimpleThemeMode
+    {
+        Light,
+        Dark
+    }
+}

+ 2 - 2
src/Avalonia.Themes.Fluent/Controls/NumericUpDown.xaml

@@ -38,7 +38,7 @@
                        BorderBrush="{TemplateBinding BorderBrush}"
                        CornerRadius="{TemplateBinding CornerRadius}"
                        Padding="0"
-                       MinWidth="{TemplateBinding MinWidth}"
+                       MinWidth="0"
                        HorizontalContentAlignment="Stretch"
                        VerticalContentAlignment="Stretch"
                        AllowSpin="{TemplateBinding AllowSpin}"
@@ -50,7 +50,7 @@
                    BorderBrush="Transparent"
                    Margin="-1"
                    Padding="{TemplateBinding Padding}"
-                   MinWidth="{TemplateBinding MinWidth}"
+                   MinWidth="0"
                    Foreground="{TemplateBinding Foreground}"
                    FontSize="{TemplateBinding FontSize}"
                    Watermark="{TemplateBinding Watermark}"

+ 1 - 12
src/Skia/Avalonia.Skia/DrawingContextImpl.cs

@@ -459,8 +459,6 @@ namespace Avalonia.Skia
             {
                 var glyphRunImpl = (GlyphRunImpl)glyphRun.GlyphRunImpl;
 
-                ConfigureTextRendering(paintWrapper);
-
                 Canvas.DrawText(glyphRunImpl.TextBlob, (float)glyphRun.BaselineOrigin.X,
                     (float)glyphRun.BaselineOrigin.Y, paintWrapper.Paint);
             }
@@ -482,7 +480,7 @@ namespace Avalonia.Skia
         public void PushClip(RoundedRect clip)
         {
             Canvas.Save();
-            Canvas.ClipRoundRect(clip.ToSKRoundRect());
+            Canvas.ClipRoundRect(clip.ToSKRoundRect(), antialias:true);
         }
 
         /// <inheritdoc />
@@ -606,15 +604,6 @@ namespace Avalonia.Skia
             }
         }
 
-        internal void ConfigureTextRendering(PaintWrapper wrapper)
-        {
-            var paint = wrapper.Paint;
-
-            paint.IsEmbeddedBitmapText = true;
-            paint.SubpixelText = true;
-            paint.LcdRenderText = _canTextUseLcdRendering;
-        }
-
         /// <summary>
         /// Configure paint wrapper for using gradient brush.
         /// </summary>

+ 1 - 1
src/Skia/Avalonia.Skia/PlatformRenderInterface.cs

@@ -198,7 +198,7 @@ namespace Avalonia.Skia
         private static readonly SKFont s_font = new SKFont
         {
             Subpixel = true,
-            Edging = SKFontEdging.Antialias,
+            Edging = SKFontEdging.SubpixelAntialias,
             Hinting = SKFontHinting.Full,
             LinearMetrics = true
         };

+ 11 - 2
src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs

@@ -151,8 +151,8 @@ namespace Avalonia.Win32
                     }
                 case WindowsMessage.WM_CHAR:
                     {
-                        // Ignore control chars
-                        if (ToInt32(wParam) >= 32)
+                        // Ignore control chars and chars that were handled in WM_KEYDOWN.
+                        if (ToInt32(wParam) >= 32 && !_ignoreWmChar)
                         {
                             e = new RawTextInputEventArgs(WindowsKeyboardDevice.Instance, timestamp, _owner,
                                 new string((char)ToInt32(wParam), 1));
@@ -519,6 +519,15 @@ namespace Avalonia.Win32
             {
                 Input(e);
 
+                if ((WindowsMessage)msg == WindowsMessage.WM_KEYDOWN)
+                {
+                    // Handling a WM_KEYDOWN message should cause the subsequent WM_CHAR message to
+                    // be ignored. This should be safe to do as WM_CHAR should only be produced in
+                    // response to the call to TranslateMessage/DispatchMessage after a WM_KEYDOWN
+                    // is handled.
+                    _ignoreWmChar = e.Handled;
+                }
+
                 if (e.Handled)
                 {
                     return IntPtr.Zero;

+ 1 - 0
src/Windows/Avalonia.Win32/WindowImpl.cs

@@ -90,6 +90,7 @@ namespace Avalonia.Win32
         private bool _shown;
         private bool _hiddenWindowIsParent;
         private uint _langid;
+        private bool _ignoreWmChar;
 
         public WindowImpl()
         {

+ 7 - 5
tests/Avalonia.DesignerSupport.TestApp/App.xaml

@@ -1,8 +1,10 @@
-<Application xmlns="https://github.com/avaloniaui"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="Avalonia.DesignerSupport.TestApp.App">
+<Application
+    x:Class="Avalonia.DesignerSupport.TestApp.App"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <Application.Styles>
-        <StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/>
-        <StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/>
+        <StyleInclude Source="avares://Avalonia.Themes.Default/DefaultTheme.xaml" />
+        <StyleInclude Source="avares://Avalonia.Themes.Default/Accents/Base.xaml" />
+        <StyleInclude Source="avares://Avalonia.Themes.Default/Accents/BaseLight.xaml" />
     </Application.Styles>
 </Application>

+ 1 - 1
tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs

@@ -528,7 +528,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml
                 var xaml = @"
 <Styles xmlns='https://github.com/avaloniaui'
         xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
-    <StyleInclude Source='resm:Avalonia.Themes.Default.ContextMenu.xaml?assembly=Avalonia.Themes.Default'/>
+    <StyleInclude Source='avares://Avalonia.Themes.Default/Controls/ContextMenu.xaml'/>
 </Styles>";
 
                 var styles = AvaloniaRuntimeXamlLoader.Parse<Styles>(xaml);

+ 1 - 1
tests/Avalonia.UnitTests/TestServices.cs

@@ -168,7 +168,7 @@ namespace Avalonia.UnitTests
             };
 
             var baseLight = (IStyle)AvaloniaXamlLoader.Load(
-                new Uri("resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"));
+                new Uri("avares://Avalonia.Themes.Default/Accents/BaseLight.xaml"));
             result.Add(baseLight);
 
             return result;

+ 6 - 0
tests/Avalonia.UnitTests/UnitTestApplication.cs

@@ -10,6 +10,7 @@ using System.Reactive.Disposables;
 using System.Reactive.Concurrency;
 using Avalonia.Input.Platform;
 using Avalonia.Animation;
+using Avalonia.Shared.PlatformSupport;
 
 namespace Avalonia.UnitTests
 {
@@ -29,6 +30,11 @@ namespace Avalonia.UnitTests
             RegisterServices();
         }
 
+        static UnitTestApplication()
+        {
+            AssetLoader.RegisterResUriParsers();
+        }
+
         public static new UnitTestApplication Current => (UnitTestApplication)Application.Current;
 
         public TestServices Services => _services;