Browse Source

Merge branch 'master' into refactor/remove_duplicate_math_utils

Dariusz Komosiński 5 years ago
parent
commit
23d8c38818
33 changed files with 851 additions and 307 deletions
  1. 2 1
      samples/ControlCatalog/MainView.xaml
  2. 2 1
      samples/ControlCatalog/Pages/ButtonPage.xaml
  3. 9 9
      samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml
  4. 7 7
      samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml.cs
  5. 6 6
      samples/ControlCatalog/Pages/NumericUpDownPage.xaml
  6. 10 5
      src/Avalonia.Base/Data/Core/Plugins/InpcPropertyAccessorPlugin.cs
  7. 7 2
      src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs
  8. 2 2
      src/Avalonia.Controls/Calendar/Calendar.cs
  9. 67 67
      src/Avalonia.Controls/Calendar/CalendarDatePicker.cs
  10. 2 2
      src/Avalonia.Controls/Calendar/CalendarItem.cs
  11. 18 4
      src/Avalonia.Controls/Converters/MarginMultiplierConverter.cs
  12. 2 2
      src/Avalonia.Themes.Default/CalendarDatePicker.xaml
  13. 1 1
      src/Avalonia.Themes.Default/DefaultTheme.xaml
  14. 1 1
      src/Avalonia.Themes.Default/Slider.xaml
  15. 51 0
      src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml
  16. 52 0
      src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml
  17. 81 0
      src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml
  18. 80 0
      src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml
  19. 13 14
      src/Avalonia.Themes.Fluent/Button.xaml
  20. 118 82
      src/Avalonia.Themes.Fluent/ButtonSpinner.xaml
  21. 2 2
      src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml
  22. 2 1
      src/Avalonia.Themes.Fluent/FluentTheme.xaml
  23. 37 15
      src/Avalonia.Themes.Fluent/NumericUpDown.xaml
  24. 62 0
      src/Avalonia.Themes.Fluent/RepeatButton.xaml
  25. 4 4
      src/Avalonia.Themes.Fluent/Slider.xaml
  26. 1 0
      src/Avalonia.Themes.Fluent/TextBox.xaml
  27. 91 21
      src/Avalonia.Themes.Fluent/ToggleButton.xaml
  28. 1 1
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Property.cs
  29. 47 0
      tests/Avalonia.Benchmarks/Data/AccessorTestObject.cs
  30. 5 49
      tests/Avalonia.Benchmarks/Data/PropertyAccessorBenchmarks.cs
  31. 60 0
      tests/Avalonia.Benchmarks/Data/PropertyAccessorPluginBenchmarks.cs
  32. 7 7
      tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs
  33. 1 1
      tests/Avalonia.Markup.UnitTests/Parsers/ExpressionObserverBuilderTests_Property.cs

+ 2 - 1
samples/ControlCatalog/MainView.xaml

@@ -29,7 +29,8 @@
                ScrollViewer.HorizontalScrollBarVisibility="Disabled">
           <pages:DataGridPage/>
       </TabItem>
-      <TabItem Header="DatePicker"><pages:DatePickerPage/></TabItem>
+      <TabItem Header="CalendarDatePicker">
+        <pages:CalendarDatePickerPage/></TabItem>
       <TabItem Header="Drag+Drop"><pages:DragAndDropPage/></TabItem>
       <TabItem Header="Expander"><pages:ExpanderPage/></TabItem>
       <TabItem Header="Image"

+ 2 - 1
samples/ControlCatalog/Pages/ButtonPage.xaml

@@ -26,7 +26,8 @@
         </Button>
         <RepeatButton Name="RepeatButton">
           <TextBlock Name="RepeatButtonTextBlock" Text="Repeat Button: 0" />
-        </RepeatButton>      
+        </RepeatButton>
+        <ToggleButton Content="Toggle Button"/>
     </StackPanel>
 
       <StackPanel Orientation="Vertical" Spacing="8" Width="150">

+ 9 - 9
samples/ControlCatalog/Pages/DatePickerPage.xaml → samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml

@@ -1,8 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.DatePickerPage">
+             x:Class="ControlCatalog.Pages.CalendarDatePickerPage">
   <StackPanel Orientation="Vertical" Spacing="4">
-    <TextBlock Classes="h1">DatePicker</TextBlock>
+    <TextBlock Classes="h1">CalendarDatePicker</TextBlock>
     <TextBlock Classes="h2">A control for selecting dates with a calendar drop-down</TextBlock>
         
     <StackPanel Orientation="Horizontal"
@@ -12,34 +12,34 @@
       <StackPanel Orientation="Vertical"
                   Width="200">
         <TextBlock Text="SelectedDateFormat: Short"/>
-        <DatePicker Name="DatePicker1"
+        <CalendarDatePicker Name="DatePicker1"
                     SelectedDateFormat="Short"
                     Margin="0,0,0,8"/>
 
         <TextBlock Text="SelectedDateFormat: Long"/>
-        <DatePicker Name="DatePicker2"
+        <CalendarDatePicker Name="DatePicker2"
                     SelectedDateFormat="Long"
                     Margin="0,0,0,8"/>
 
         <TextBlock Text="SelectedDateFormat: Custom"/>
-        <DatePicker Name="DatePicker3"
+        <CalendarDatePicker Name="DatePicker3"
                     SelectedDateFormat="Custom"
                     CustomDateFormatString="ddd, MMM d"
                     Margin="0,0,0,8"/>
 
         <TextBlock Text="Blackout Dates"/>
-        <DatePicker Name="DatePicker4"
+        <CalendarDatePicker Name="DatePicker4"
                     Margin="0,0,0,8"/>
 
-        <DatePicker Margin="0,0,0,8"
+        <CalendarDatePicker Margin="0,0,0,8"
                     Watermark="Watermark"/>
-        <DatePicker Margin="0,0,0,8"
+        <CalendarDatePicker Margin="0,0,0,8"
                     Name="DatePicker5"
                     Watermark="Floating Watermark"
                     UseFloatingWatermark="True"/>
                 
         <TextBlock Text="Disabled"/>
-        <DatePicker IsEnabled="False"/>
+        <CalendarDatePicker IsEnabled="False"/>
       </StackPanel>
 
     </StackPanel> 

+ 7 - 7
samples/ControlCatalog/Pages/DatePickerPage.xaml.cs → samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml.cs

@@ -4,17 +4,17 @@ using System;
 
 namespace ControlCatalog.Pages
 {
-    public class DatePickerPage : UserControl
+    public class CalendarDatePickerPage : UserControl
     {
-        public DatePickerPage()
+        public CalendarDatePickerPage()
         {
             InitializeComponent();
             
-            var dp1 = this.FindControl<DatePicker>("DatePicker1");
-            var dp2 = this.FindControl<DatePicker>("DatePicker2");
-            var dp3 = this.FindControl<DatePicker>("DatePicker3");
-            var dp4 = this.FindControl<DatePicker>("DatePicker4");
-            var dp5 = this.FindControl<DatePicker>("DatePicker5");
+            var dp1 = this.FindControl<CalendarDatePicker>("DatePicker1");
+            var dp2 = this.FindControl<CalendarDatePicker>("DatePicker2");
+            var dp3 = this.FindControl<CalendarDatePicker>("DatePicker3");
+            var dp4 = this.FindControl<CalendarDatePicker>("DatePicker4");
+            var dp5 = this.FindControl<CalendarDatePicker>("DatePicker5");
 
             dp1.SelectedDate = DateTime.Today;
             dp2.SelectedDate = DateTime.Today.AddDays(10);

+ 6 - 6
samples/ControlCatalog/Pages/NumericUpDownPage.xaml

@@ -50,22 +50,22 @@
         <TextBlock Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" Margin="2">Text:</TextBlock>
         <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding #upDown.Text}" VerticalAlignment="Center" Margin="2" />
       </Grid>
-      <Grid Grid.Row="0" Grid.Column="2" Margin="10,2,2,2" RowDefinitions="Auto,Auto,Auto,Auto,Auto" ColumnDefinitions="Auto, 120">
+      <Grid Grid.Row="0" Grid.Column="2" Margin="10,2,2,2" RowDefinitions="Auto,Auto,Auto,Auto,Auto" ColumnDefinitions="Auto, Auto">
         <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="10,2,2,2">Minimum:</TextBlock>
         <NumericUpDown Grid.Row="0" Grid.Column="1" Value="{Binding #upDown.Minimum}"
-                       CultureInfo="{Binding #upDown.CultureInfo}" VerticalAlignment="Center" Margin="2" Width="70" HorizontalAlignment="Center"/>
+                       CultureInfo="{Binding #upDown.CultureInfo}" VerticalAlignment="Center" Margin="2" HorizontalAlignment="Center"/>
 
         <TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" Margin="10,2,2,2">Maximum:</TextBlock>
         <NumericUpDown Grid.Row="1" Grid.Column="1" Value="{Binding #upDown.Maximum}"
-                       CultureInfo="{Binding #upDown.CultureInfo}" VerticalAlignment="Center" Margin="2" Width="70" HorizontalAlignment="Center"/>
+                       CultureInfo="{Binding #upDown.CultureInfo}" VerticalAlignment="Center" Margin="2" HorizontalAlignment="Center"/>
 
         <TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="10,2,2,2">Increment:</TextBlock>
         <NumericUpDown Grid.Row="2" Grid.Column="1" Value="{Binding #upDown.Increment}" VerticalAlignment="Center"
-                       Margin="2" Width="70" HorizontalAlignment="Center"/>
+                       Margin="2" HorizontalAlignment="Center"/>
 
         <TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" Margin="10,2,2,2">Value:</TextBlock>
         <NumericUpDown Grid.Row="3" Grid.Column="1" Value="{Binding #upDown.Value}" VerticalAlignment="Center"
-                       Margin="2" Width="70" HorizontalAlignment="Center"/>
+                       Margin="2" HorizontalAlignment="Center"/>
 
       </Grid>
     </Grid>
@@ -73,7 +73,7 @@
     <StackPanel Margin="2,10,2,2" Orientation="Horizontal" Spacing="10">
       <TextBlock FontSize="14" FontWeight="Bold" VerticalAlignment="Center">Usage of NumericUpDown:</TextBlock>
       <NumericUpDown Name="upDown" Minimum="0" Maximum="10" Increment="0.5"
-                     CultureInfo="en-US" VerticalAlignment="Center" Width="100"
+                     CultureInfo="en-US" VerticalAlignment="Center"
                      Watermark="Enter text" FormatString="{Binding SelectedFormat.Value}"/>
     </StackPanel>
 

+ 10 - 5
src/Avalonia.Base/Data/Core/Plugins/InpcPropertyAccessorPlugin.cs

@@ -12,7 +12,7 @@ namespace Avalonia.Data.Core.Plugins
     public class InpcPropertyAccessorPlugin : IPropertyAccessorPlugin
     {
         /// <inheritdoc/>
-        public bool Match(object obj, string propertyName) => true;
+        public bool Match(object obj, string propertyName) => GetPropertyWithName(obj.GetType(), propertyName) != null;
 
         /// <summary>
         /// Starts monitoring the value of a property on an object.
@@ -30,10 +30,7 @@ namespace Avalonia.Data.Core.Plugins
 
             reference.TryGetTarget(out object instance);
 
-            const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Public |
-                                              BindingFlags.Static | BindingFlags.Instance;
-
-            var p = instance.GetType().GetProperty(propertyName, bindingFlags);
+            var p = GetPropertyWithName(instance.GetType(), propertyName);
 
             if (p != null)
             {
@@ -47,6 +44,14 @@ namespace Avalonia.Data.Core.Plugins
             }
         }
 
+        private static PropertyInfo GetPropertyWithName(Type type, string propertyName)
+        {
+            const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Public |
+                                              BindingFlags.Static | BindingFlags.Instance;
+
+            return type.GetProperty(propertyName, bindingFlags);
+        }
+
         private class Accessor : PropertyAccessorBase, IWeakSubscriber<PropertyChangedEventArgs>
         {
             private readonly WeakReference<object> _reference;

+ 7 - 2
src/Avalonia.Base/Data/Core/PropertyAccessorNode.cs

@@ -62,8 +62,13 @@ namespace Avalonia.Data.Core
 
             if (accessor == null)
             {
-                throw new NotSupportedException(
-                    $"Could not find a matching property accessor for {PropertyName}.");
+                reference.TryGetTarget(out object instance);
+
+                var message = $"Could not find a matching property accessor for '{PropertyName}' on '{instance}'";
+
+                var exception = new MissingMemberException(message);
+
+                accessor = new PropertyError(new BindingNotification(exception, BindingErrorType.Error));
             }
 
             _accessor = accessor;

+ 2 - 2
src/Avalonia.Controls/Calendar/Calendar.cs

@@ -998,10 +998,10 @@ namespace Avalonia.Controls
 
 
         /// <summary>
-        /// Gets or sets a value indicating whether DatePicker should change its 
+        /// Gets or sets a value indicating whether CalendarDatePicker should change its 
         /// DisplayDate because of a SelectedDate change on its Calendar.
         /// </summary>
-        internal bool DatePickerDisplayDateFlag { get; set; }
+        internal bool CalendarDatePickerDisplayDateFlag { get; set; }
 
         internal CalendarDayButton FindDayButtonFromDay(DateTime day)
         {

+ 67 - 67
src/Avalonia.Controls/Calendar/DatePicker.cs → src/Avalonia.Controls/Calendar/CalendarDatePicker.cs

@@ -16,29 +16,29 @@ namespace Avalonia.Controls
 {
     /// <summary>
     /// Provides data for the
-    /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+    /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
     /// event.
     /// </summary>
-    public class DatePickerDateValidationErrorEventArgs : EventArgs
+    public class CalendarDatePickerDateValidationErrorEventArgs : EventArgs
     {
         private bool _throwException;
 
         /// <summary>
         /// Initializes a new instance of the
-        /// <see cref="T:Avalonia.Controls.DatePickerDateValidationErrorEventArgs" />
+        /// <see cref="T:Avalonia.Controls.CalendarDatePickerDateValidationErrorEventArgs" />
         /// class.
         /// </summary>
         /// <param name="exception">
         /// The initial exception from the
-        /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+        /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
         /// event.
         /// </param>
         /// <param name="text">
         /// The text that caused the
-        /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+        /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
         /// event.
         /// </param>
-        public DatePickerDateValidationErrorEventArgs(Exception exception, string text)
+        public CalendarDatePickerDateValidationErrorEventArgs(Exception exception, string text)
         {
             this.Text = text;
             this.Exception = exception;
@@ -46,7 +46,7 @@ namespace Avalonia.Controls
 
         /// <summary>
         /// Gets the initial exception associated with the
-        /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+        /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
         /// event.
         /// </summary>
         /// <value>
@@ -56,7 +56,7 @@ namespace Avalonia.Controls
 
         /// <summary>
         /// Gets the text that caused the
-        /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+        /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
         /// event.
         /// </summary>
         /// <value>
@@ -66,7 +66,7 @@ namespace Avalonia.Controls
 
         /// <summary>
         /// Gets or sets a value indicating whether
-        /// <see cref="P:Avalonia.Controls.DatePickerDateValidationErrorEventArgs.Exception" />
+        /// <see cref="P:Avalonia.Controls.CalendarDatePickerDateValidationErrorEventArgs.Exception" />
         /// should be thrown.
         /// </summary>
         /// <value>
@@ -74,7 +74,7 @@ namespace Avalonia.Controls
         /// </value>
         /// <exception cref="T:System.ArgumentException">
         /// If set to true and
-        /// <see cref="P:Avalonia.Controls.DatePickerDateValidationErrorEventArgs.Exception" />
+        /// <see cref="P:Avalonia.Controls.CalendarDatePickerDateValidationErrorEventArgs.Exception" />
         /// is null.
         /// </exception>
         public bool ThrowException
@@ -93,9 +93,9 @@ namespace Avalonia.Controls
 
     /// <summary>
     /// Specifies date formats for a
-    /// <see cref="T:Avalonia.Controls.DatePicker" />.
+    /// <see cref="T:Avalonia.Controls.CalendarDatePicker" />.
     /// </summary>
-    public enum DatePickerFormat
+    public enum CalendarDatePickerFormat
     {
         /// <summary>
         /// Specifies that the date should be displayed using unabbreviated days
@@ -115,7 +115,7 @@ namespace Avalonia.Controls
         Custom = 2
     }
 
-    public class DatePicker : TemplatedControl
+    public class CalendarDatePicker : TemplatedControl
     {
         private const string ElementTextBox = "PART_TextBox";
         private const string ElementButton = "PART_Button";
@@ -154,59 +154,59 @@ namespace Avalonia.Controls
         /// </value>
         public CalendarBlackoutDatesCollection BlackoutDates { get; private set; }
 
-        public static readonly DirectProperty<DatePicker, DateTime> DisplayDateProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, DateTime>(
+        public static readonly DirectProperty<CalendarDatePicker, DateTime> DisplayDateProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime>(
                 nameof(DisplayDate),
                 o => o.DisplayDate,
                 (o, v) => o.DisplayDate = v);
-        public static readonly DirectProperty<DatePicker, DateTime?> DisplayDateStartProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, DateTime?>(
+        public static readonly DirectProperty<CalendarDatePicker, DateTime?> DisplayDateStartProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime?>(
                 nameof(DisplayDateStart),
                 o => o.DisplayDateStart,
                 (o, v) => o.DisplayDateStart = v);
-        public static readonly DirectProperty<DatePicker, DateTime?> DisplayDateEndProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, DateTime?>(
+        public static readonly DirectProperty<CalendarDatePicker, DateTime?> DisplayDateEndProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime?>(
                 nameof(DisplayDateEnd),
                 o => o.DisplayDateEnd,
                 (o, v) => o.DisplayDateEnd = v);
         public static readonly StyledProperty<DayOfWeek> FirstDayOfWeekProperty =
-            AvaloniaProperty.Register<DatePicker, DayOfWeek>(nameof(FirstDayOfWeek));
+            AvaloniaProperty.Register<CalendarDatePicker, DayOfWeek>(nameof(FirstDayOfWeek));
 
-        public static readonly DirectProperty<DatePicker, bool> IsDropDownOpenProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, bool>(
+        public static readonly DirectProperty<CalendarDatePicker, bool> IsDropDownOpenProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, bool>(
                 nameof(IsDropDownOpen),
                 o => o.IsDropDownOpen,
                 (o, v) => o.IsDropDownOpen = v);
 
         public static readonly StyledProperty<bool> IsTodayHighlightedProperty =
-            AvaloniaProperty.Register<DatePicker, bool>(nameof(IsTodayHighlighted));
-        public static readonly DirectProperty<DatePicker, DateTime?> SelectedDateProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, DateTime?>(
+            AvaloniaProperty.Register<CalendarDatePicker, bool>(nameof(IsTodayHighlighted));
+        public static readonly DirectProperty<CalendarDatePicker, DateTime?> SelectedDateProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, DateTime?>(
                 nameof(SelectedDate),
                 o => o.SelectedDate,
                 (o, v) => o.SelectedDate = v);
 
-        public static readonly StyledProperty<DatePickerFormat> SelectedDateFormatProperty =
-            AvaloniaProperty.Register<DatePicker, DatePickerFormat>(
+        public static readonly StyledProperty<CalendarDatePickerFormat> SelectedDateFormatProperty =
+            AvaloniaProperty.Register<CalendarDatePicker, CalendarDatePickerFormat>(
                 nameof(SelectedDateFormat),
-                defaultValue: DatePickerFormat.Short,
+                defaultValue: CalendarDatePickerFormat.Short,
                 validate: IsValidSelectedDateFormat);
 
         public static readonly StyledProperty<string> CustomDateFormatStringProperty =
-            AvaloniaProperty.Register<DatePicker, string>(
+            AvaloniaProperty.Register<CalendarDatePicker, string>(
                 nameof(CustomDateFormatString),
                 defaultValue: "d",
                 validate: IsValidDateFormatString);
 
-        public static readonly DirectProperty<DatePicker, string> TextProperty =
-            AvaloniaProperty.RegisterDirect<DatePicker, string>(
+        public static readonly DirectProperty<CalendarDatePicker, string> TextProperty =
+            AvaloniaProperty.RegisterDirect<CalendarDatePicker, string>(
                 nameof(Text),
                 o => o.Text,
                 (o, v) => o.Text = v);
         public static readonly StyledProperty<string> WatermarkProperty =
-            TextBox.WatermarkProperty.AddOwner<DatePicker>();
+            TextBox.WatermarkProperty.AddOwner<CalendarDatePicker>();
         public static readonly StyledProperty<bool> UseFloatingWatermarkProperty =
-            TextBox.UseFloatingWatermarkProperty.AddOwner<DatePicker>();
+            TextBox.UseFloatingWatermarkProperty.AddOwner<CalendarDatePicker>();
 
 
         /// <summary>
@@ -218,9 +218,9 @@ namespace Avalonia.Controls
         /// </value>
         /// <exception cref="T:System.ArgumentOutOfRangeException">
         /// The specified date is not in the range defined by
-        /// <see cref="P:Avalonia.Controls.DatePicker.DisplayDateStart" />
+        /// <see cref="P:Avalonia.Controls.CalendarDatePicker.DisplayDateStart" />
         /// and
-        /// <see cref="P:Avalonia.Controls.DatePicker.DisplayDateEnd" />.
+        /// <see cref="P:Avalonia.Controls.CalendarDatePicker.DisplayDateEnd" />.
         /// </exception>
         public DateTime DisplayDate
         {
@@ -320,7 +320,7 @@ namespace Avalonia.Controls
         /// <exception cref="T:System.ArgumentOutOfRangeException">
         /// An specified format is not valid.
         /// </exception>
-        public DatePickerFormat SelectedDateFormat
+        public CalendarDatePickerFormat SelectedDateFormat
         {
             get { return GetValue(SelectedDateFormatProperty); }
             set { SetValue(SelectedDateFormatProperty, value); }
@@ -380,33 +380,33 @@ namespace Avalonia.Controls
         /// Occurs when <see cref="P:Avalonia.Controls.DatePicker.Text" />
         /// is assigned a value that cannot be interpreted as a date.
         /// </summary>
-        public event EventHandler<DatePickerDateValidationErrorEventArgs> DateValidationError;
+        public event EventHandler<CalendarDatePickerDateValidationErrorEventArgs> DateValidationError;
 
         /// <summary>
         /// Occurs when the
-        /// <see cref="P:Avalonia.Controls.DatePicker.SelectedDate" />
+        /// <see cref="P:Avalonia.Controls.CalendarDatePicker.SelectedDate" />
         /// property is changed.
         /// </summary>
         public event EventHandler<SelectionChangedEventArgs> SelectedDateChanged;
 
-        static DatePicker()
+        static CalendarDatePicker()
         {
-            FocusableProperty.OverrideDefaultValue<DatePicker>(true);
-
-            DisplayDateProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnDisplayDateChanged(e));
-            DisplayDateStartProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnDisplayDateStartChanged(e));
-            DisplayDateEndProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnDisplayDateEndChanged(e));
-            IsDropDownOpenProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnIsDropDownOpenChanged(e));
-            SelectedDateProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnSelectedDateChanged(e));
-            SelectedDateFormatProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnSelectedDateFormatChanged(e));
-            CustomDateFormatStringProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnCustomDateFormatStringChanged(e));
-            TextProperty.Changed.AddClassHandler<DatePicker>((x,e) => x.OnTextChanged(e));
+            FocusableProperty.OverrideDefaultValue<CalendarDatePicker>(true);
+
+            DisplayDateProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnDisplayDateChanged(e));
+            DisplayDateStartProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnDisplayDateStartChanged(e));
+            DisplayDateEndProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnDisplayDateEndChanged(e));
+            IsDropDownOpenProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnIsDropDownOpenChanged(e));
+            SelectedDateProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnSelectedDateChanged(e));
+            SelectedDateFormatProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnSelectedDateFormatChanged(e));
+            CustomDateFormatStringProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnCustomDateFormatStringChanged(e));
+            TextProperty.Changed.AddClassHandler<CalendarDatePicker>((x,e) => x.OnTextChanged(e));
         }
         /// <summary>
         /// Initializes a new instance of the
         /// <see cref="T:Avalonia.Controls.DatePicker" /> class.
         /// </summary>
-        public DatePicker()
+        public CalendarDatePicker()
         {
             FirstDayOfWeek = DateTimeHelper.GetCurrentDateFormat().FirstDayOfWeek;
             _defaultText = string.Empty;
@@ -662,12 +662,12 @@ namespace Avalonia.Controls
                 // change is coming from the Calendar UI itself, so, we
                 // shouldn't change the DisplayDate since it will automatically
                 // be changed by the Calendar
-                if ((day.Month != DisplayDate.Month || day.Year != DisplayDate.Year) && (_calendar == null || !_calendar.DatePickerDisplayDateFlag))
+                if ((day.Month != DisplayDate.Month || day.Year != DisplayDate.Year) && (_calendar == null || !_calendar.CalendarDatePickerDisplayDateFlag))
                 {
                     DisplayDate = day;
                 }
                 if(_calendar != null)
-                    _calendar.DatePickerDisplayDateFlag = false;
+                    _calendar.CalendarDatePickerDisplayDateFlag = false;
             }
             else
             {
@@ -707,7 +707,7 @@ namespace Avalonia.Controls
         }
         private void OnCustomDateFormatStringChanged(AvaloniaPropertyChangedEventArgs e)
         {
-            if(SelectedDateFormat == DatePickerFormat.Custom)
+            if(SelectedDateFormat == CalendarDatePickerFormat.Custom)
             {
                 OnDateFormatChanged();
             }
@@ -752,15 +752,15 @@ namespace Avalonia.Controls
 
         /// <summary>
         /// Raises the
-        /// <see cref="E:Avalonia.Controls.DatePicker.DateValidationError" />
+        /// <see cref="E:Avalonia.Controls.CalendarDatePicker.DateValidationError" />
         /// event.
         /// </summary>
         /// <param name="e">
         /// A
-        /// <see cref="T:Avalonia.Controls.DatePickerDateValidationErrorEventArgs" />
+        /// <see cref="T:Avalonia.Controls.CalendarDatePickerDateValidationErrorEventArgs" />
         /// that contains the event data.
         /// </param>
-        protected virtual void OnDateValidationError(DatePickerDateValidationErrorEventArgs e)
+        protected virtual void OnDateValidationError(CalendarDatePickerDateValidationErrorEventArgs e)
         {
             DateValidationError?.Invoke(this, e);
         }
@@ -959,7 +959,7 @@ namespace Avalonia.Controls
                 }
                 else
                 {
-                    var dateValidationError = new DatePickerDateValidationErrorEventArgs(new ArgumentOutOfRangeException(nameof(text), "SelectedDate value is not valid."), text);
+                    var dateValidationError = new CalendarDatePickerDateValidationErrorEventArgs(new ArgumentOutOfRangeException(nameof(text), "SelectedDate value is not valid."), text);
                     OnDateValidationError(dateValidationError);
 
                     if (dateValidationError.ThrowException)
@@ -970,7 +970,7 @@ namespace Avalonia.Controls
             }
             catch (FormatException ex)
             {
-                DatePickerDateValidationErrorEventArgs textParseError = new DatePickerDateValidationErrorEventArgs(ex, text);
+                CalendarDatePickerDateValidationErrorEventArgs textParseError = new CalendarDatePickerDateValidationErrorEventArgs(ex, text);
                 OnDateValidationError(textParseError);
 
                 if (textParseError.ThrowException)
@@ -986,11 +986,11 @@ namespace Avalonia.Controls
 
             switch (SelectedDateFormat)
             {
-                case DatePickerFormat.Short:
+                case CalendarDatePickerFormat.Short:
                     return string.Format(CultureInfo.CurrentCulture, d.ToString(dtfi.ShortDatePattern, dtfi));
-                case DatePickerFormat.Long:
+                case CalendarDatePickerFormat.Long:
                     return string.Format(CultureInfo.CurrentCulture, d.ToString(dtfi.LongDatePattern, dtfi));
-                case DatePickerFormat.Custom:
+                case CalendarDatePickerFormat.Custom:
                     return string.Format(CultureInfo.CurrentCulture, d.ToString(CustomDateFormatString, dtfi));
             }
             return null;
@@ -1118,12 +1118,12 @@ namespace Avalonia.Controls
 
                     switch (SelectedDateFormat)
                     {
-                        case DatePickerFormat.Long:
+                        case CalendarDatePickerFormat.Long:
                             {
                                 watermarkText = string.Format(CultureInfo.CurrentCulture, watermarkFormat, dtfi.LongDatePattern.ToString());
                                 break;
                             }
-                        case DatePickerFormat.Short:
+                        case CalendarDatePickerFormat.Short:
                         default:
                             {
                                 watermarkText = string.Format(CultureInfo.CurrentCulture, watermarkFormat, dtfi.ShortDatePattern.ToString());
@@ -1139,11 +1139,11 @@ namespace Avalonia.Controls
             }
         }
 
-        private static bool IsValidSelectedDateFormat(DatePickerFormat value)
+        private static bool IsValidSelectedDateFormat(CalendarDatePickerFormat value)
         {
-            return value == DatePickerFormat.Long
-                || value == DatePickerFormat.Short
-                || value == DatePickerFormat.Custom;
+            return value == CalendarDatePickerFormat.Long
+                || value == CalendarDatePickerFormat.Short
+                || value == CalendarDatePickerFormat.Custom;
         }
         private static bool IsValidDateFormatString(string formatString)
         {

+ 2 - 2
src/Avalonia.Controls/Calendar/CalendarItem.cs

@@ -909,7 +909,7 @@ namespace Avalonia.Controls.Primitives
                         case CalendarSelectionMode.SingleDate:
                             {
                                 DateTime selectedDate = (DateTime)b.DataContext;
-                                Owner.DatePickerDisplayDateFlag = true;
+                                Owner.CalendarDatePickerDisplayDateFlag = true;
                                 if (Owner.SelectedDates.Count == 0)
                                 {
                                     Owner.SelectedDates.Add(selectedDate);
@@ -981,7 +981,7 @@ namespace Avalonia.Controls.Primitives
                                 }
                             case CalendarSelectionMode.SingleDate:
                                 {
-                                    Owner.DatePickerDisplayDateFlag = true;
+                                    Owner.CalendarDatePickerDisplayDateFlag = true;
                                     if (Owner.SelectedDates.Count == 0)
                                     {
                                         Owner.SelectedDates.Add(selectedDate);

+ 18 - 4
src/Avalonia.Controls/Converters/MarginMultiplierConverter.cs

@@ -18,10 +18,24 @@ namespace Avalonia.Controls.Converters
 
         public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
         {
-            if (!(value is int depth))
-                return new Thickness(0);
-
-            return new Thickness(Left ? Indent * depth : 0, Top ? Indent * depth : 0, Right ? Indent * depth : 0, Bottom ? Indent * depth : 0);
+            if (value is int scalarDepth)
+            {
+                return new Thickness(
+                    Left ? Indent * scalarDepth : 0,
+                    Top ? Indent * scalarDepth : 0,
+                    Right ? Indent * scalarDepth : 0,
+                    Bottom ? Indent * scalarDepth : 0);
+            }
+            else if (value is Thickness thinknessDepth)
+            {
+                return new Thickness(
+                    Left ? Indent * thinknessDepth.Left : 0,
+                    Top ? Indent * thinknessDepth.Top : 0,
+                    Right ? Indent * thinknessDepth.Right : 0,
+                    Bottom ? Indent * thinknessDepth.Bottom : 0);
+            }
+            return new Thickness(0);
+            
         }
 
         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

+ 2 - 2
src/Avalonia.Themes.Fluent/DatePicker.xaml → src/Avalonia.Themes.Default/CalendarDatePicker.xaml

@@ -8,7 +8,7 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:sys="clr-namespace:System;assembly=netstandard">
-  <Style Selector="DatePicker">
+  <Style Selector="CalendarDatePicker">
 
     <Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}"/>
     <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
@@ -119,7 +119,7 @@
     </Setter>
   </Style>
 
-  <Style Selector="DatePicker:focus /template/ TextBox#PART_TextBox">
+  <Style Selector="CalendarDatePicker:focus /template/ TextBox#PART_TextBox">
     <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
   </Style>
   

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

@@ -45,7 +45,7 @@
   <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.DatePicker.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"/>

+ 1 - 1
src/Avalonia.Themes.Default/Slider.xaml

@@ -46,7 +46,7 @@
             <ColumnDefinition Width="Auto"/>
           </Grid.ColumnDefinitions>
           <Border Name="TrackBackground" Grid.Column="1" Width="4" Margin="0,6" HorizontalAlignment="Center"/>
-          <Track Name="PART_Track" Grid.Column="1" Orientation="Vertical" IsDirectionReversed="True">
+          <Track Name="PART_Track" Grid.Column="1" Orientation="Vertical">
             <Track.DecreaseButton>
                <RepeatButton Name="PART_DecreaseButton"
                              Classes="repeattrack" />

+ 51 - 0
src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml

@@ -92,6 +92,57 @@
     <StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
     <StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
 
+    <!-- Resources for RepeatButton.xaml -->
+    <StaticResource x:Key="RepeatButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundPointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <!-- Resources for Windows.UI.Xaml.Controls.Primitives.ToggleButton -->
+    <StaticResource x:Key="ToggleButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundPointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundChecked" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPointerOver" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPressed" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminate" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminateDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundChecked" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPointerOver" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPressed" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminate" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminateDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushChecked" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPressed" ResourceKey="SystemControlTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminate" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminateDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+
     <!-- BaseResources for ComboBox.xaml -->
     <StaticResource x:Key="ComboBoxItemForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
     <StaticResource x:Key="ComboBoxItemForegroundPressed" ResourceKey="SystemControlHighlightAltBaseHighBrush" />

+ 52 - 0
src/Avalonia.Themes.Fluent/Accents/FluentBaseLight.xaml

@@ -93,6 +93,58 @@
     <StaticResource x:Key="ButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
     <StaticResource x:Key="ButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
 
+    <!-- Resources for RepeatButton.xaml -->
+    <StaticResource x:Key="RepeatButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundPointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+
+    <!-- Resources for ToggleButton.xaml -->
+    <StaticResource x:Key="ToggleButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundPointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundChecked" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPointerOver" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPressed" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminate" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminateDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundChecked" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPointerOver" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPressed" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminate" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminateDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushChecked" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPressed" ResourceKey="SystemControlTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminate" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminateDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    
     <!-- BaseResources for ComboBox.xaml -->
     <StaticResource x:Key="ComboBoxItemForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
     <StaticResource x:Key="ComboBoxItemForegroundPressed" ResourceKey="SystemControlHighlightAltBaseHighBrush" />

+ 81 - 0
src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml

@@ -39,6 +39,87 @@
     <SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="#FFFFFFFF" />
     <SolidColorBrush x:Key="ButtonPressedForegroundThemeBrush" Color="#FF000000" />
 
+    <!-- Resources for RepeatButton.xaml -->
+    <Thickness x:Key="RepeatButtonBorderThemeThickness">1</Thickness>
+    <StaticResource x:Key="RepeatButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <SolidColorBrush x:Key="RepeatButtonBackgroundPointerOver" Color="{StaticResource SystemBaseHighColor}" Opacity="0.1" />
+    <StaticResource x:Key="RepeatButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPointerOver" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <SolidColorBrush x:Key="RepeatButtonBorderThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledBackgroundThemeBrush" Color="Transparent" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledBorderThemeBrush" Color="#66FFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledForegroundThemeBrush" Color="#66FFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonPointerOverBackgroundThemeBrush" Color="#21FFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonPointerOverForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonPressedBackgroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="RepeatButtonPressedForegroundThemeBrush" Color="#FF000000" />
+    
+    <!-- Resources for ToggleButton.xaml -->
+    <Thickness x:Key="ToggleButtonBorderThemeThickness">1</Thickness>
+    <StaticResource x:Key="ToggleButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <SolidColorBrush x:Key="ToggleButtonBackgroundPointerOver" Color="{StaticResource SystemBaseHighColor}" Opacity="0.1" />
+    <StaticResource x:Key="ToggleButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundChecked" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPointerOver" ResourceKey="SystemAccentColorDark1" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPressed" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminate" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminateDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundChecked" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPointerOver" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPressed" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminate" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminateDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPointerOver" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushChecked" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPointerOver" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPressed" ResourceKey="SystemControlTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminate" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminateDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <SolidColorBrush x:Key="ToggleButtonBackgroundThemeBrush" Color="Transparent" />
+    <SolidColorBrush x:Key="ToggleButtonBorderThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedBackgroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedBorderThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedDisabledBackgroundThemeBrush" Color="#66FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedDisabledForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPointerOverBackgroundThemeBrush" Color="#99FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPointerOverBorderThemeBrush" Color="#99FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedBackgroundThemeBrush" Color="Transparent" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedBorderThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonDisabledBorderThemeBrush" Color="#66FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonDisabledForegroundThemeBrush" Color="#66FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonPointerOverBackgroundThemeBrush" Color="#21FFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonPressedBackgroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonPressedForegroundThemeBrush" Color="#FF000000" />
+
     <!-- Resources for ComboBox.xaml -->
     <x:Double x:Key="ComboBoxArrowThemeFontSize">21</x:Double>
     <x:Double x:Key="ComboBoxThemeMinWidth">64</x:Double>

+ 80 - 0
src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesLight.xaml

@@ -39,6 +39,86 @@
     <SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="#FF000000" />
     <SolidColorBrush x:Key="ButtonPressedForegroundThemeBrush" Color="#FFFFFFFF" />
 
+    <!-- Resources for RepeatButton.xaml -->
+    <Thickness x:Key="RepeatButtonBorderThemeThickness">1</Thickness>
+    <StaticResource x:Key="RepeatButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <SolidColorBrush x:Key="RepeatButtonBackgroundPointerOver" Color="{StaticResource SystemBaseHighColor}" Opacity="0.1" />
+    <StaticResource x:Key="RepeatButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="RepeatButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="RepeatButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPointerOver" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="RepeatButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <SolidColorBrush x:Key="RepeatButtonBorderThemeBrush" Color="#33000000" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledBackgroundThemeBrush" Color="#66CACACA" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledBorderThemeBrush" Color="#1A000000" />
+    <SolidColorBrush x:Key="RepeatButtonDisabledForegroundThemeBrush" Color="#66000000" />
+    <SolidColorBrush x:Key="RepeatButtonForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="RepeatButtonPointerOverBackgroundThemeBrush" Color="#D1CDCDCD" />
+    <SolidColorBrush x:Key="RepeatButtonPointerOverForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="RepeatButtonPressedBackgroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="RepeatButtonPressedForegroundThemeBrush" Color="#FFFFFFFF" />
+    <!-- Resources for ToggleButton.xaml -->
+    <Thickness x:Key="ToggleButtonBorderThemeThickness">1</Thickness>
+    <StaticResource x:Key="ToggleButtonBackground" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <SolidColorBrush x:Key="ToggleButtonBackgroundPointerOver" Color="{StaticResource SystemBaseHighColor}" Opacity="0.1" />
+    <StaticResource x:Key="ToggleButtonBackgroundPressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundChecked" ResourceKey="SystemControlHighlightAccentBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPointerOver" ResourceKey="SystemAccentColorLight1" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedPressed" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundCheckedDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminate" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePointerOver" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminatePressed" ResourceKey="SystemControlBackgroundBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBackgroundIndeterminateDisabled" ResourceKey="SystemControlBackgroundBaseLowBrush" />
+    <StaticResource x:Key="ToggleButtonForeground" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundPressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundChecked" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPointerOver" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedPressed" ResourceKey="SystemControlHighlightAltChromeWhiteBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundCheckedDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminate" ResourceKey="SystemControlForegroundBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminatePressed" ResourceKey="SystemControlHighlightBaseHighBrush" />
+    <StaticResource x:Key="ToggleButtonForegroundIndeterminateDisabled" ResourceKey="SystemControlDisabledBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrush" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPointerOver" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushPressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushChecked" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPointerOver" ResourceKey="SystemControlHighlightAltTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedPressed" ResourceKey="SystemControlTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushCheckedDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminate" ResourceKey="SystemControlForegroundTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePointerOver" ResourceKey="SystemControlHighlightBaseMediumLowBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminatePressed" ResourceKey="SystemControlHighlightTransparentBrush" />
+    <StaticResource x:Key="ToggleButtonBorderBrushIndeterminateDisabled" ResourceKey="SystemControlDisabledTransparentBrush" />
+    <SolidColorBrush x:Key="ToggleButtonBackgroundThemeBrush" Color="Transparent" />
+    <SolidColorBrush x:Key="ToggleButtonBorderThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedBackgroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedBorderThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedDisabledBackgroundThemeBrush" Color="#66000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedDisabledForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedForegroundThemeBrush" Color="#FFFFFFFF" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPointerOverBackgroundThemeBrush" Color="#99000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPointerOverBorderThemeBrush" Color="#99000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedBackgroundThemeBrush" Color="Transparent" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedBorderThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonCheckedPressedForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonDisabledBorderThemeBrush" Color="#66000000" />
+    <SolidColorBrush x:Key="ToggleButtonDisabledForegroundThemeBrush" Color="#66000000" />
+    <SolidColorBrush x:Key="ToggleButtonForegroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonPointerOverBackgroundThemeBrush" Color="#21000000" />
+    <SolidColorBrush x:Key="ToggleButtonPressedBackgroundThemeBrush" Color="#FF000000" />
+    <SolidColorBrush x:Key="ToggleButtonPressedForegroundThemeBrush" Color="#FFFFFFFF" />
+
     <!-- Resources for ComboBox.xaml -->
     <x:Double x:Key="ComboBoxArrowThemeFontSize">21</x:Double>
     <x:Double x:Key="ComboBoxThemeMinWidth">64</x:Double>

+ 13 - 14
src/Avalonia.Themes.Fluent/Button.xaml

@@ -4,14 +4,13 @@
       <StackPanel Spacing="20">
         <Button Content="Click Me!" />
         <Button Classes="accent" Content="Click Me!" />
-        <RepeatButton Content="RepeatButton" Width="100" />
-      </StackPanel>
+      </StackPanel>      
     </Border>
   </Design.PreviewWith>
   <Styles.Resources>
     <Thickness x:Key="ButtonPadding">8,5,8,6</Thickness>
   </Styles.Resources>
-  <Style Selector="Button, RepeatButton">
+  <Style Selector="Button">
     <Setter Property="Background" Value="{DynamicResource ButtonBackground}" />
     <!--<Setter Property="BackgroundSizing" Value="OuterBorderEdge" />-->
     <Setter Property="Foreground" Value="{DynamicResource ButtonForeground}" />
@@ -42,44 +41,44 @@
     </Setter>
   </Style>
 
-  <!--  PointerOverState  -->
-  <Style Selector="Button:pointerover /template/ ContentPresenter, RepeatButton:pointerover /template/ ContentPresenter">
+  <!-- PointerOverState -->  
+  <Style Selector="Button:pointerover /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundPointerOver}" />
   </Style>
-
-  <Style Selector="Button:pressed  /template/ ContentPresenter, RepeatButton:pressed  /template/ ContentPresenter">
+  
+  <Style Selector="Button:pressed  /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundPressed}" />
   </Style>
-
-  <Style Selector="Button:disabled, RepeatButton:disabled">
+  
+  <Style Selector="Button:disabled /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundDisabled}" />
   </Style>
 
-  <Style Selector="Button.accent, RepeatButton.accent">
-    <Setter Property="Foreground" Value="{DynamicResource AccentButtonForeground}" />
+  <Style Selector="Button.accent /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackground}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrush}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForeground}" />
   </Style>
 
-  <Style Selector="Button.accent:pointerover /template/ ContentPresenter, RepeatButton.accent:pointerover /template/ ContentPresenter">
+  <Style Selector="Button.accent:pointerover /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundPointerOver}" />
   </Style>
 
-  <Style Selector="Button.accent:pressed  /template/ ContentPresenter, RepeatButton.accent:pressed  /template/ ContentPresenter">
+  <Style Selector="Button.accent:pressed  /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundPressed}" />
   </Style>
 
-  <Style Selector="Button.accent:disabled, RepeatButton.accent:disabled">
+  <Style Selector="Button.accent:disabled /template/ ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundDisabled}" />

+ 118 - 82
src/Avalonia.Themes.Fluent/ButtonSpinner.xaml

@@ -1,104 +1,140 @@
-<Styles xmlns="https://github.com/avaloniaui">
-  <Style Selector="ButtonSpinner">
-    <Setter Property="Background" Value="Transparent"/>
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
-    <Setter Property="BorderThickness" Value="{DynamicResource ThemeBorderThickness}"/>
-    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
-    <Setter Property="VerticalContentAlignment" Value="Center"/>
+<Styles xmlns="https://github.com/avaloniaui"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:sys="clr-namespace:System;assembly=netstandard"
+        xmlns:converters="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls">
+  <Design.PreviewWith>
+    <Border Padding="20"
+            Background="Black">
+      <StackPanel Spacing="20">
+        <ButtonSpinner ButtonSpinnerLocation="Right"
+                       Content="Right disabled inline spinner"
+                       AllowSpin="False" />
+        <ButtonSpinner ButtonSpinnerLocation="Left"
+                       Content="Left spinner" />
+        <ButtonSpinner ShowButtonSpinner="False"
+                       Content="Hide spinner" />
+      </StackPanel>
+    </Border>
+  </Design.PreviewWith>
+
+  <Styles.Resources>
+    <converters:MarginMultiplierConverter x:Key="ButtonSpinner_OnlyLeftThinknessConverter"
+                                          Indent="1"
+                                          Left="True" />
+    <converters:MarginMultiplierConverter x:Key="ButtonSpinner_OnlyRightThinknessConverter"
+                                          Indent="1"
+                                          Right="True" />
+
+    <StreamGeometry x:Key="ButtonSpinnerIncreaseButtonIcon">M0,9 L10,0 20,9 19,10 10,2 1,10 z</StreamGeometry>
+    <StreamGeometry x:Key="ButtonSpinnerDecreaseButtonIcon">M0,1 L10,10 20,1 19,0 10,8 1,0 z</StreamGeometry>
+  </Styles.Resources>
+
+  <!--  RepeatButton.ButtonSpinnerRepeatButton  -->
+  <Style Selector="RepeatButton.ButtonSpinnerRepeatButton">
+    <Setter Property="MinWidth" Value="34" />
+    <Setter Property="VerticalAlignment" Value="Stretch" />
   </Style>
-  <Style Selector="ButtonSpinner /template/ RepeatButton">
-    <Setter Property="Background" Value="Transparent"/>
-    <Setter Property="BorderBrush" Value="Transparent"/>
+
+  <Style Selector="RepeatButton.ButtonSpinnerRepeatButton /template/ ContentPresenter">
+    <Setter Property="CornerRadius" Value="0" />
+    <Setter Property="BorderBrush" Value="{TemplateBinding BorderBrush}" />
   </Style>
-  <Style Selector="ButtonSpinner /template/ RepeatButton:pointerover">
-    <Setter Property="Background" Value="{DynamicResource ThemeControlMidBrush}"/>
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
+  <Style Selector="RepeatButton.ButtonSpinnerRepeatButton:disabled">
+    <Setter Property="BorderBrush" Value="{TemplateBinding BorderBrush}" />
   </Style>
-  <Style Selector="ButtonSpinner /template/ RepeatButton#PART_IncreaseButton">
-    <Setter Property="Content">
-      <Template>
-        <Path Fill="{DynamicResource ThemeForegroundBrush}"
-              Width="8"
-              Height="4"
-              Stretch="Uniform"
-              HorizontalAlignment="Center"
-              VerticalAlignment="Center"
-              Data="M0,5 L4.5,.5 9,5 6,5 4.5,3.5 3,5 z"/>
-      </Template>
-    </Setter>
+  <Style Selector="RepeatButton.ButtonSpinnerRepeatButton:disabled > Path">
+    <Setter Property="Fill" Value="{DynamicResource RepeatButtonForegroundDisabled}" />
   </Style>
-  <Style Selector="ButtonSpinner /template/ RepeatButton#PART_DecreaseButton">
-    <Setter Property="Content">
-      <Template>
-        <Path Fill="{DynamicResource ThemeForegroundBrush}"
-              Width="8"
-              Height="4"
-              Stretch="Uniform"
-              HorizontalAlignment="Center"
-              VerticalAlignment="Center"
-              Data="M0,0 L3,0 4.5,1.5 6,0 9,0 4.5,4.5 z"/>
-      </Template>
-    </Setter>
-  </Style>
-  <Style Selector="ButtonSpinner:right">
+
+  <!--  ButtonSpinner  -->
+  <Style Selector="ButtonSpinner">
+    <Setter Property="Background" Value="Transparent" />
+    <Setter Property="Foreground" Value="{DynamicResource TextControlForeground}" />
+    <Setter Property="Padding" Value="10, 0" />
+    <Setter Property="Background" Value="{DynamicResource TextControlBackground}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource TextControlBorderBrush}" />
+    <Setter Property="BorderThickness" Value="{DynamicResource TextControlBorderThemeThickness}" />
+    <Setter Property="MinHeight" Value="{DynamicResource TextControlThemeMinHeight}" />
+    <Setter Property="MinWidth" Value="{DynamicResource TextControlThemeMinWidth}" />
+    <Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
+    <Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
+    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
+    <Setter Property="VerticalContentAlignment" Value="Center" />
     <Setter Property="Template">
       <ControlTemplate>
-        <Border Name="border"
-                Background="{TemplateBinding Background}"
+        <Border Background="{TemplateBinding Background}"
                 BorderBrush="{TemplateBinding BorderBrush}"
                 BorderThickness="{TemplateBinding BorderThickness}"
-                Margin="{TemplateBinding Padding}"
-                HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
-                VerticalAlignment="{TemplateBinding VerticalAlignment}">
-          <Grid ColumnDefinitions="*,Auto">
-            <ContentPresenter Name="PART_ContentPresenter" Grid.Column="0"
+                CornerRadius="{DynamicResource ControlCornerRadius}">
+          <Grid ColumnDefinitions="Auto,*,Auto">
+            <ContentPresenter Name="PART_ContentPresenter"
+                              Grid.Column="1"
                               ContentTemplate="{TemplateBinding ContentTemplate}"
                               Content="{TemplateBinding Content}"
                               HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                               VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
-                              Padding="{TemplateBinding Padding}"/>
-            <Grid Grid.Column="1" RowDefinitions="*,*" IsVisible="{TemplateBinding ShowButtonSpinner}">
-              <RepeatButton Grid.Row="0" Name="PART_IncreaseButton"/>
-              <RepeatButton Grid.Row="1" Name="PART_DecreaseButton"/>
-            </Grid>
+                              Padding="{TemplateBinding Padding}" />
+
+            <StackPanel Name="PART_SpinnerPanel"
+                        Orientation="Horizontal"
+                        IsVisible="{TemplateBinding ShowButtonSpinner}">
+              <RepeatButton Name="PART_IncreaseButton"
+                            Classes="ButtonSpinnerRepeatButton"
+                            VerticalContentAlignment="Center"
+                            Foreground="{TemplateBinding Foreground}"
+                            BorderBrush="{TemplateBinding BorderBrush}"
+                            Background="{TemplateBinding Background}"
+                            FontSize="{TemplateBinding FontSize}">
+                <Path Fill="{TemplateBinding Foreground}"
+                      Width="16"
+                      Height="8"
+                      Stretch="Uniform"
+                      HorizontalAlignment="Center"
+                      VerticalAlignment="Center"
+                      Data="{StaticResource ButtonSpinnerIncreaseButtonIcon}" />
+              </RepeatButton>
+
+              <RepeatButton Name="PART_DecreaseButton"
+                            Classes="ButtonSpinnerRepeatButton"
+                            Foreground="{TemplateBinding Foreground}"
+                            BorderBrush="{TemplateBinding BorderBrush}"
+                            Background="{TemplateBinding Background}"
+                            VerticalContentAlignment="Center"
+                            FontSize="{TemplateBinding FontSize}">
+                <Path Fill="{TemplateBinding Foreground}"
+                      Width="16"
+                      Height="8"
+                      Stretch="Uniform"
+                      HorizontalAlignment="Center"
+                      VerticalAlignment="Center"
+                      Data="{StaticResource ButtonSpinnerDecreaseButtonIcon}" />
+              </RepeatButton>
+            </StackPanel>
           </Grid>
         </Border>
       </ControlTemplate>
     </Setter>
   </Style>
-  <Style Selector="ButtonSpinner:left">
-    <Setter Property="Template">
-      <ControlTemplate>
-        <Border Name="border"
-                Background="{TemplateBinding Background}"
-                BorderBrush="{TemplateBinding BorderBrush}"
-                BorderThickness="{TemplateBinding BorderThickness}"
-                Margin="{TemplateBinding Padding}"
-                HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
-                VerticalAlignment="{TemplateBinding VerticalAlignment}">
-          <Grid ColumnDefinitions="Auto,*">
-            <Grid Grid.Column="0" RowDefinitions="*,*" IsVisible="{TemplateBinding ShowButtonSpinner}">
-              <RepeatButton Grid.Row="0" Name="PART_IncreaseButton"/>
-              <RepeatButton Grid.Row="1" Name="PART_DecreaseButton"/>
-            </Grid>
-            <ContentPresenter Name="PART_ContentPresenter" Grid.Column="1"
-                              ContentTemplate="{TemplateBinding ContentTemplate}"
-                              Content="{TemplateBinding Content}"
-                              HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
-                              VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
-                              Padding="{TemplateBinding Padding}"/>
-          </Grid>
-        </Border>
-      </ControlTemplate>
-    </Setter>
+
+  <!--  ButtonSpinnerLocation=Right  -->
+  <Style Selector="ButtonSpinner:right /template/ StackPanel#PART_SpinnerPanel">
+    <Setter Property="Grid.Column" Value="2" />
+  </Style>
+  <Style Selector="ButtonSpinner:right /template/ RepeatButton.ButtonSpinnerRepeatButton">
+    <Setter Property="BorderThickness" Value="{Binding $parent[ButtonSpinner].BorderThickness, Converter={StaticResource ButtonSpinner_OnlyLeftThinknessConverter}}" />
   </Style>
-  <Style Selector="ButtonSpinner:pointerover /template/ Border#border">
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
+
+  <!--  ButtonSpinnerLocation=Left  -->
+  <Style Selector="ButtonSpinner:left /template/ StackPanel#PART_SpinnerPanel">
+    <Setter Property="Grid.Column" Value="0" />
   </Style>
-  <Style Selector="ButtonSpinner:focus /template/ Border#border">
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
+  <Style Selector="ButtonSpinner:left /template/ RepeatButton.ButtonSpinnerRepeatButton">
+    <Setter Property="BorderThickness" Value="{Binding $parent[ButtonSpinner].BorderThickness, Converter={StaticResource ButtonSpinner_OnlyRightThinknessConverter}}" />
   </Style>
-  <Style Selector="ButtonSpinner:error /template/ Border#border">
-    <Setter Property="BorderBrush" Value="{DynamicResource ErrorBrush}"/>
+
+  <!--  Error state  -->
+  <Style Selector="ButtonSpinner:error">
+    <Setter Property="BorderBrush" Value="{DynamicResource ErrorBrush}" />
   </Style>
+
 </Styles>

+ 2 - 2
src/Avalonia.Themes.Default/DatePicker.xaml → src/Avalonia.Themes.Fluent/CalendarDatePicker.xaml

@@ -8,7 +8,7 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:sys="clr-namespace:System;assembly=netstandard">
-  <Style Selector="DatePicker">
+  <Style Selector="CalendarDatePicker">
 
     <Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}"/>
     <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
@@ -119,7 +119,7 @@
     </Setter>
   </Style>
 
-  <Style Selector="DatePicker:focus /template/ TextBox#PART_TextBox">
+  <Style Selector="CalendarDatePicker:focus /template/ TextBox#PART_TextBox">
     <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
   </Style>
   

+ 2 - 1
src/Avalonia.Themes.Fluent/FluentTheme.xaml

@@ -23,6 +23,7 @@
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.PopupRoot.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.ProgressBar.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.RadioButton.xaml?assembly=Avalonia.Themes.Fluent"/>
+  <StyleInclude Source="resm:Avalonia.Themes.Fluent.RepeatButton.xaml?assembly=Avalonia.Themes.Fluent" />
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.Separator.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.Slider.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.ScrollBar.xaml?assembly=Avalonia.Themes.Fluent"/>
@@ -44,7 +45,7 @@
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.CalendarDayButton.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.CalendarItem.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.Calendar.xaml?assembly=Avalonia.Themes.Fluent"/>
-  <StyleInclude Source="resm:Avalonia.Themes.Fluent.DatePicker.xaml?assembly=Avalonia.Themes.Fluent"/>
+  <StyleInclude Source="resm:Avalonia.Themes.Fluent.CalendarDatePicker.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.ButtonSpinner.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.NumericUpDown.xaml?assembly=Avalonia.Themes.Fluent"/>
   <StyleInclude Source="resm:Avalonia.Themes.Fluent.AutoCompleteBox.xaml?assembly=Avalonia.Themes.Fluent"/>

+ 37 - 15
src/Avalonia.Themes.Fluent/NumericUpDown.xaml

@@ -1,38 +1,60 @@
-<Styles xmlns="https://github.com/avaloniaui">
+<Styles xmlns="https://github.com/avaloniaui"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <Design.PreviewWith>
+    <Border Padding="20"
+            Background="Black">
+      <StackPanel Spacing="20">
+        <NumericUpDown Minimum="0"
+                       Maximum="10"
+                       Increment="0.5"
+                       Width="150"
+                       Watermark="Enter text" />
+        <NumericUpDown Minimum="0"
+                       Maximum="10"
+                       Increment="0.5"
+                       Width="150"
+                       ButtonSpinnerLocation="Left"
+                       Watermark="Enter text" />
+      </StackPanel>
+    </Border>
+  </Design.PreviewWith>
+
   <Style Selector="NumericUpDown">
-    <Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}" />
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
-    <Setter Property="BorderThickness" Value="{DynamicResource ThemeBorderThickness}"/>
-    <Setter Property="Padding" Value="4"/>
+    <Setter Property="Foreground" Value="{DynamicResource TextControlForeground}" />
+    <Setter Property="Background" Value="{DynamicResource TextControlBackground}" />
+    <Setter Property="BorderThickness" Value="{DynamicResource TextControlBorderThemeThickness}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource TextControlBorderBrush}" />
+    <Setter Property="MinHeight" Value="{DynamicResource TextControlThemeMinHeight}" />
+    <Setter Property="MinWidth" Value="{DynamicResource TextControlThemeMinWidth}" />
+    <Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
+    <Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
+    <Setter Property="Padding" Value="{DynamicResource TextControlThemePadding}" />
     <Setter Property="Template">
       <ControlTemplate>
         <ButtonSpinner Name="PART_Spinner"
                        Background="{TemplateBinding Background}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        BorderBrush="{TemplateBinding BorderBrush}"
+                       Padding="0"
                        HorizontalContentAlignment="Stretch"
                        VerticalContentAlignment="Stretch"
                        AllowSpin="{TemplateBinding AllowSpin}"
                        ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}"
                        ButtonSpinnerLocation="{TemplateBinding ButtonSpinnerLocation}">
           <TextBox Name="PART_TextBox"
-                   BorderThickness="0"
-                   Background="{TemplateBinding Background}" 
-                   BorderBrush="{TemplateBinding BorderBrush}"
+                   Background="Transparent"
+                   BorderBrush="Transparent"
+                   Margin="-2"
                    Padding="{TemplateBinding Padding}"
                    Watermark="{TemplateBinding Watermark}"
                    DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}"
                    IsReadOnly="{TemplateBinding IsReadOnly}"
                    Text="{TemplateBinding Text}"
                    AcceptsReturn="False"
-                   TextWrapping="NoWrap">
-          </TextBox>
+                   TextWrapping="NoWrap" />
         </ButtonSpinner>
       </ControlTemplate>
     </Setter>
   </Style>
-  <Style Selector="NumericUpDown /template/ TextBox#PART_TextBox">
-    <Setter Property="Margin" Value="4"/>
-    <Setter Property="MinWidth" Value="20"/>
-  </Style>
-</Styles>
+
+</Styles>

+ 62 - 0
src/Avalonia.Themes.Fluent/RepeatButton.xaml

@@ -0,0 +1,62 @@
+<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <Design.PreviewWith>
+    <Border Padding="20">
+      <StackPanel Spacing="20">
+        <RepeatButton Content="Click Me!" />
+      </StackPanel>
+    </Border>
+  </Design.PreviewWith>
+  <Styles.Resources>
+    <Thickness x:Key="ButtonPadding">8,5,8,6</Thickness>
+  </Styles.Resources>
+  <Style Selector="RepeatButton">
+    <Setter Property="Background" Value="{DynamicResource RepeatButtonBackground}" />
+    <!--<Setter Property="BackgroundSizing" Value="OuterBorderEdge" />-->
+    <Setter Property="Foreground" Value="{DynamicResource RepeatButtonForeground}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrush}" />
+    <Setter Property="BorderThickness" Value="{DynamicResource ButtonBorderThemeThickness}" />
+    <Setter Property="Padding" Value="{StaticResource ButtonPadding}" />
+    <Setter Property="HorizontalAlignment" Value="Left" />
+    <Setter Property="VerticalAlignment" Value="Center" />
+    <Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
+    <Setter Property="FontWeight" Value="Normal" />
+    <Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
+    <!--<Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}" />
+    <Setter Property="FocusVisualMargin" Value="-3" />-->
+    <Setter Property="Template">
+      <ControlTemplate>
+        <ContentPresenter x:Name="PART_ContentPresenter"
+                          Background="{TemplateBinding Background}"
+                          BorderBrush="{TemplateBinding BorderBrush}"
+                          BorderThickness="{TemplateBinding BorderThickness}"
+                          Content="{TemplateBinding Content}"
+                          ContentTemplate="{TemplateBinding ContentTemplate}"
+                          Padding="{TemplateBinding Padding}"
+                          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
+                          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
+      </ControlTemplate>
+    </Setter>
+  </Style>
+
+  <Style Selector="RepeatButton /template/ ContentPresenter">
+    <Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
+  </Style>
+
+  <Style Selector="RepeatButton:pointerover /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundPointerOver}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushPointerOver}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundPointerOver}" />
+  </Style>
+
+  <Style Selector="RepeatButton:pressed  /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundPressed}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushPressed}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundPressed}" />
+  </Style>
+
+  <Style Selector="RepeatButton:disabled /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundDisabled}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushDisabled}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundDisabled}" />
+  </Style>
+</Styles>

+ 4 - 4
src/Avalonia.Themes.Fluent/Slider.xaml

@@ -64,7 +64,7 @@
                 <TickBar Name="BottomTickBar" Placement="Bottom" Height="{DynamicResource SliderOutsideTickBarThemeHeight}" VerticalAlignment="Top" Margin="0,4,0,0" Grid.Row="2" Grid.ColumnSpan="3" />
                 <Track Name="PART_Track" Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal">
                   <Track.DecreaseButton>
-                    <RepeatButton Name="PART_DecreaseButton" Background="{TemplateBinding Foreground}">
+                    <RepeatButton Name="PART_DecreaseButton" Background="{TemplateBinding Foreground}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                       <RepeatButton.Template>
                         <ControlTemplate>
                           <Grid>
@@ -76,7 +76,7 @@
                     </RepeatButton>
                   </Track.DecreaseButton>
                   <Track.IncreaseButton>
-                    <RepeatButton Name="PART_IncreaseButton" Background="{TemplateBinding Background}">
+                    <RepeatButton Name="PART_IncreaseButton" Background="{TemplateBinding Background}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                       <RepeatButton.Template>
                         <ControlTemplate>
                           <Grid>
@@ -125,7 +125,7 @@
                 <TickBar Name="RightTickBar" Placement="Right" Width="{DynamicResource SliderOutsideTickBarThemeHeight}" HorizontalAlignment="Left" Margin="4,0,0,0" Grid.Column="2" Grid.RowSpan="3" />
                 <Track Name="PART_Track" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="3" Orientation="Vertical">
                   <Track.DecreaseButton>
-                    <RepeatButton Name="PART_DecreaseButton" Background="{TemplateBinding Foreground}">
+                    <RepeatButton Name="PART_DecreaseButton" Background="{TemplateBinding Foreground}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                       <RepeatButton.Template>
                         <ControlTemplate>
                           <Grid>
@@ -137,7 +137,7 @@
                     </RepeatButton>
                   </Track.DecreaseButton>
                   <Track.IncreaseButton>
-                    <RepeatButton Name="PART_IncreaseButton" Background="{TemplateBinding Background}">
+                    <RepeatButton Name="PART_IncreaseButton" Background="{TemplateBinding Background}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                       <RepeatButton.Template>
                         <ControlTemplate>
                           <Grid>

+ 1 - 0
src/Avalonia.Themes.Fluent/TextBox.xaml

@@ -27,6 +27,7 @@
                             Grid.ColumnSpan="2"
                             TextBlock.FontWeight="Normal"
                             TextBlock.Foreground="{DynamicResource TextControlHeaderForeground}"
+                            IsVisible="False"
                             Margin="{DynamicResource TextBoxTopHeaderMargin}" />
           
           <Border Name="border"

+ 91 - 21
src/Avalonia.Themes.Fluent/ToggleButton.xaml

@@ -1,38 +1,108 @@
-<Styles xmlns="https://github.com/avaloniaui">
+<Styles xmlns="https://github.com/avaloniaui"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <Design.PreviewWith>
+    <Border Padding="20">
+      <StackPanel Spacing="20">
+        <ToggleButton Content="Click Me!" />
+        <ToggleButton Content="Disabled" IsEnabled="False" />
+        <ToggleButton Content="Three state" IsThreeState="True" />
+      </StackPanel>
+    </Border>
+  </Design.PreviewWith>
+
+  <Styles.Resources>
+    <Thickness x:Key="ButtonPadding">8,5,8,6</Thickness>
+  </Styles.Resources>
   <Style Selector="ToggleButton">
-    <Setter Property="Background" Value="{DynamicResource ThemeControlMidBrush}"/>
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderLowBrush}"/>
-    <Setter Property="BorderThickness" Value="{DynamicResource ThemeBorderThickness}"/>
-    <Setter Property="Foreground" Value="{DynamicResource ThemeForegroundBrush}"/>
-    <Setter Property="Padding" Value="4"/>
-    <Setter Property="HorizontalContentAlignment" Value="Center"/>
-    <Setter Property="VerticalContentAlignment" Value="Center"/>
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackground}" />
+    <Setter Property="Foreground" Value="{DynamicResource ToggleButtonForeground}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrush}" />
+    <Setter Property="BorderThickness" Value="{DynamicResource ToggleButtonBorderThemeThickness}" />
+    <Setter Property="Padding" Value="{DynamicResource ButtonPadding}" />
+    <Setter Property="HorizontalAlignment" Value="Left" />
+    <Setter Property="VerticalAlignment" Value="Center" />
+    <Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
+    <Setter Property="FontWeight" Value="Normal" />
+    <Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
     <Setter Property="Template">
       <ControlTemplate>
-        <ContentPresenter Name="PART_ContentPresenter"
+        <ContentPresenter x:Name="PART_ContentPresenter"
                           Background="{TemplateBinding Background}"
                           BorderBrush="{TemplateBinding BorderBrush}"
                           BorderThickness="{TemplateBinding BorderThickness}"
-                          ContentTemplate="{TemplateBinding ContentTemplate}"
+                          CornerRadius="{DynamicResource ControlCornerRadius}"
                           Content="{TemplateBinding Content}"
+                          ContentTemplate="{TemplateBinding ContentTemplate}"
                           Padding="{TemplateBinding Padding}"
-                          TextBlock.Foreground="{TemplateBinding Foreground}"
                           HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
-                          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
+                          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
       </ControlTemplate>
     </Setter>
   </Style>
-  <Style Selector="ToggleButton:checked /template/ ContentPresenter">
-    <Setter Property="Background" Value="{DynamicResource ThemeControlHighBrush}"/>
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
-  </Style>
+
   <Style Selector="ToggleButton:pointerover /template/ ContentPresenter">
-    <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundPointerOver}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushPointerOver}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundPointerOver}" />
   </Style>
+
   <Style Selector="ToggleButton:pressed  /template/ ContentPresenter">
-    <Setter Property="Background" Value="{DynamicResource ThemeControlHighBrush}"/>
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundPressed}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushPressed}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundPressed}" />
+  </Style>
+
+  <Style Selector="ToggleButton:disabled /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundDisabled}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushDisabled}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundDisabled}" />
+  </Style>
+
+  <Style Selector="ToggleButton:checked /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundChecked}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushChecked}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundChecked}" />
+  </Style>
+
+  <Style Selector="ToggleButton:checked:pointerover /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedPointerOver}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedPointerOver}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedPointerOver}" />
+  </Style>
+
+  <Style Selector="ToggleButton:checked:pressed /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedPressed}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedPressed}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedPressed}" />
+  </Style>
+
+  <Style Selector="ToggleButton:checked:disabled /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedDisabled}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedDisabled}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedDisabled}" />
+  </Style>
+
+  <Style Selector="ToggleButton:indeterminate /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminate}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminate}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminate}" />
+  </Style>
+
+  <Style Selector="ToggleButton:indeterminate:pointerover /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminatePointerOver}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminatePointerOver}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminatePointerOver}" />
+  </Style>
+
+  <Style Selector="ToggleButton:indeterminate:pressed /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminatePressed}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminatePressed}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminatePressed}" />
   </Style>
-  <Style Selector="ToggleButton:disabled">
-    <Setter Property="Opacity" Value="{DynamicResource ThemeDisabledOpacity}"/>
+
+  <Style Selector="ToggleButton:indeterminate:disabled /template/ ContentPresenter">
+    <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminateDisabled}" />
+    <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminateDisabled}" />
+    <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminateDisabled}" />
   </Style>
-</Styles>
+</Styles>

+ 1 - 1
tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_Property.cs

@@ -322,7 +322,7 @@ namespace Avalonia.Base.UnitTests.Data.Core
                 {
                     "bar",
                     new BindingNotification(
-                        new MissingMemberException("Could not find CLR property 'Bar' on 'Avalonia.Base.UnitTests.Data.Core.ExpressionObserverTests_Property+WithoutBar'"),
+                        new MissingMemberException("Could not find a matching property accessor for 'Bar' on 'Avalonia.Base.UnitTests.Data.Core.ExpressionObserverTests_Property+WithoutBar'"),
                         BindingErrorType.Error),
                     "baz",
                 },

+ 47 - 0
tests/Avalonia.Benchmarks/Data/AccessorTestObject.cs

@@ -0,0 +1,47 @@
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using JetBrains.Annotations;
+
+namespace Avalonia.Benchmarks.Data
+{
+    internal class AccessorTestObject : INotifyPropertyChanged
+    {
+        private string _test;
+
+        public string Test
+        {
+            get => _test;
+            set
+            {
+                if (_test == value)
+                {
+                    return;
+                }
+
+                _test = value;
+
+                OnPropertyChanged();
+            }
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        public void Execute()
+        {
+        }
+
+        public void Execute(object p0)
+        {
+        }
+
+        public void Execute(object p0, object p1)
+        {
+        }
+
+        [NotifyPropertyChangedInvocator]
+        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
+        {
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+        }
+    }
+}

+ 5 - 49
tests/Avalonia.Benchmarks/Data/PropertyAccessorBenchmarks.cs

@@ -1,9 +1,6 @@
 using System;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
 using Avalonia.Data.Core.Plugins;
 using BenchmarkDotNet.Attributes;
-using JetBrains.Annotations;
 
 namespace Avalonia.Benchmarks.Data
 {
@@ -12,7 +9,7 @@ namespace Avalonia.Benchmarks.Data
     {
         private readonly InpcPropertyAccessorPlugin _inpcPlugin = new InpcPropertyAccessorPlugin();
         private readonly MethodAccessorPlugin _methodPlugin = new MethodAccessorPlugin();
-        private readonly TestObject _targetStrongRef = new TestObject();
+        private readonly AccessorTestObject _targetStrongRef = new AccessorTestObject();
         private readonly WeakReference<object> _targetWeakRef;
 
         public PropertyAccessorBenchmarks()
@@ -23,66 +20,25 @@ namespace Avalonia.Benchmarks.Data
         [Benchmark]
         public void InpcAccessorMatch()
         {
-            _inpcPlugin.Match(_targetWeakRef, nameof(TestObject.Test));
+            _inpcPlugin.Match(_targetWeakRef, nameof(AccessorTestObject.Test));
         }
 
         [Benchmark]
         public void InpcAccessorStart()
         {
-            _inpcPlugin.Start(_targetWeakRef, nameof(TestObject.Test));
+            _inpcPlugin.Start(_targetWeakRef, nameof(AccessorTestObject.Test));
         }
 
         [Benchmark]
         public void MethodAccessorMatch()
         {
-            _methodPlugin.Match(_targetWeakRef, nameof(TestObject.Execute));
+            _methodPlugin.Match(_targetWeakRef, nameof(AccessorTestObject.Execute));
         }
 
         [Benchmark]
         public void MethodAccessorStart()
         {
-            _methodPlugin.Start(_targetWeakRef, nameof(TestObject.Execute));
-        }
-
-        private class TestObject : INotifyPropertyChanged
-        {
-            private string _test;
-
-            public string Test
-            {
-                get => _test;
-                set
-                {
-                    if (_test == value)
-                    {
-                        return;
-                    }
-
-                    _test = value;
-
-                    OnPropertyChanged();
-                }
-            }
-
-            public void Execute()
-            {
-            }
-
-            public void Execute(object p0)
-            {
-            }
-
-            public void Execute(object p0, object p1)
-            {
-            }
-
-            public event PropertyChangedEventHandler PropertyChanged;
-
-            [NotifyPropertyChangedInvocator]
-            protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
-            {
-                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
-            }
+            _methodPlugin.Start(_targetWeakRef, nameof(AccessorTestObject.Execute));
         }
     }
 }

+ 60 - 0
tests/Avalonia.Benchmarks/Data/PropertyAccessorPluginBenchmarks.cs

@@ -0,0 +1,60 @@
+using System.Collections.Generic;
+using Avalonia.Data.Core.Plugins;
+using BenchmarkDotNet.Attributes;
+
+namespace Avalonia.Benchmarks.Data
+{
+    [MemoryDiagnoser, InProcess]
+    public class PropertyAccessorPluginBenchmarks
+    {
+        private readonly AccessorTestObject _targetStrongRef = new AccessorTestObject();
+
+        private readonly List<IPropertyAccessorPlugin> _oldPlugins;
+        private readonly List<IPropertyAccessorPlugin> _newPlugins;
+
+        public PropertyAccessorPluginBenchmarks()
+        {
+            _oldPlugins = new List<IPropertyAccessorPlugin>
+            {
+                new AvaloniaPropertyAccessorPlugin(),
+                new MethodAccessorPlugin(),
+                new InpcPropertyAccessorPlugin()
+            };
+
+            _newPlugins = new List<IPropertyAccessorPlugin>
+            {
+                new AvaloniaPropertyAccessorPlugin(),
+                new InpcPropertyAccessorPlugin(),
+                new MethodAccessorPlugin()
+            };
+        }
+
+        [Benchmark]
+        public void MatchAccessorOld()
+        {
+            var propertyName = nameof(AccessorTestObject.Test);
+
+            foreach (IPropertyAccessorPlugin x in _oldPlugins)
+            {
+                if (x.Match(_targetStrongRef, propertyName))
+                {
+                    break;
+                }
+            }
+        }
+
+        [Benchmark]
+        public void MatchAccessorNew()
+        {
+            var propertyName = nameof(AccessorTestObject.Test);
+
+            foreach (IPropertyAccessorPlugin x in _newPlugins)
+            {
+                if (x.Match(_targetStrongRef, propertyName))
+                {
+                    break;
+                }
+            }
+        }
+    }
+}

+ 7 - 7
tests/Avalonia.Controls.UnitTests/DatePickerTests.cs → tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs

@@ -15,7 +15,7 @@ using Xunit;
 
 namespace Avalonia.Controls.UnitTests
 {
-    public class DatePickerTests
+    public class CalendarDatePickerTests
     {
         private static bool CompareDates(DateTime first, DateTime second)
         {
@@ -30,7 +30,7 @@ namespace Avalonia.Controls.UnitTests
             using (UnitTestApplication.Start(Services))
             {
                 bool handled = false;
-                DatePicker datePicker = CreateControl();
+                CalendarDatePicker datePicker = CreateControl();
                 datePicker.SelectedDateChanged += (s,e) =>
                 {
                     handled = true;
@@ -47,7 +47,7 @@ namespace Avalonia.Controls.UnitTests
         {
             using (UnitTestApplication.Start(Services))
             {
-                DatePicker datePicker = CreateControl();
+                CalendarDatePicker datePicker = CreateControl();
                 datePicker.BlackoutDates.AddDatesInPast();
 
                 DateTime goodValue = DateTime.Today.AddDays(1);
@@ -65,7 +65,7 @@ namespace Avalonia.Controls.UnitTests
         {
             using (UnitTestApplication.Start(Services))
             {
-                DatePicker datePicker = CreateControl();
+                CalendarDatePicker datePicker = CreateControl();
                 datePicker.SelectedDate = DateTime.Today.AddDays(5);
 
                 Assert.ThrowsAny<ArgumentOutOfRangeException>(
@@ -76,10 +76,10 @@ namespace Avalonia.Controls.UnitTests
         private static TestServices Services => TestServices.MockThreadingInterface.With(
             standardCursorFactory: Mock.Of<IStandardCursorFactory>());
 
-        private DatePicker CreateControl()
+        private CalendarDatePicker CreateControl()
         {
             var datePicker =
-                new DatePicker
+                new CalendarDatePicker
                 {
                     Template = CreateTemplate()
                 };
@@ -90,7 +90,7 @@ namespace Avalonia.Controls.UnitTests
 
         private IControlTemplate CreateTemplate()
         {
-            return new FuncControlTemplate<DatePicker>((control, scope) =>
+            return new FuncControlTemplate<CalendarDatePicker>((control, scope) =>
             {
                 var textBox = 
                     new TextBox

+ 1 - 1
tests/Avalonia.Markup.UnitTests/Parsers/ExpressionObserverBuilderTests_Property.cs

@@ -22,7 +22,7 @@ namespace Avalonia.Markup.UnitTests.Parsers
 
             Assert.Equal(
                 new BindingNotification(
-                    new MissingMemberException("Could not find CLR property 'Baz' on '1'"), BindingErrorType.Error),
+                    new MissingMemberException("Could not find a matching property accessor for 'Baz' on '1'"), BindingErrorType.Error),
                 result);
 
             GC.KeepAlive(data);