From b89305d708ac67a9c31270bfda8e6028d6527e3f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 26 Nov 2019 01:11:10 +0100 Subject: [PATCH] Set pseudoclasses manually. It makes creating new controls a _lot_ faster. --- src/Avalonia.Controls.DataGrid/DataGrid.cs | 8 +- src/Avalonia.Controls/Button.cs | 25 +++- src/Avalonia.Controls/ButtonSpinner.cs | 28 +++- src/Avalonia.Controls/ControlExtensions.cs | 20 --- src/Avalonia.Controls/Expander.cs | 41 ++++-- .../WindowNotificationManager.cs | 30 ++++- src/Avalonia.Controls/Primitives/ScrollBar.cs | 24 +++- .../Primitives/ToggleButton.cs | 21 ++- src/Avalonia.Controls/Primitives/Track.cs | 28 +++- src/Avalonia.Controls/ProgressBar.cs | 44 ++++++- src/Avalonia.Controls/Slider.cs | 24 +++- src/Avalonia.Input/InputElement.cs | 42 +++++- .../Controls/PseudoClassesExtensions.cs | 28 ++++ src/Avalonia.Styling/PseudoclassEngine.cs | 120 ------------------ src/Avalonia.Styling/StyledElement.cs | 70 ---------- 15 files changed, 302 insertions(+), 251 deletions(-) create mode 100644 src/Avalonia.Styling/Controls/PseudoClassesExtensions.cs delete mode 100644 src/Avalonia.Styling/PseudoclassEngine.cs diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs index 86133d5fdb..a2b8544787 100644 --- a/src/Avalonia.Controls.DataGrid/DataGrid.cs +++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs @@ -373,7 +373,11 @@ namespace Avalonia.Controls public bool IsValid { get { return _isValid; } - internal set { SetAndRaise(IsValidProperty, ref _isValid, value); } + internal set + { + SetAndRaise(IsValidProperty, ref _isValid, value); + PseudoClasses.Set(":invalid", !value); + } } public static readonly StyledProperty MaxColumnWidthProperty = @@ -656,8 +660,6 @@ namespace Avalonia.Controls HorizontalScrollBarVisibilityProperty, VerticalScrollBarVisibilityProperty); - PseudoClass(IsValidProperty, x => !x, ":invalid"); - ItemsProperty.Changed.AddClassHandler((x, e) => x.OnItemsPropertyChanged(e)); CanUserResizeColumnsProperty.Changed.AddClassHandler((x, e) => x.OnCanUserResizeColumnsChanged(e)); ColumnWidthProperty.Changed.AddClassHandler((x, e) => x.OnColumnWidthChanged(e)); diff --git a/src/Avalonia.Controls/Button.cs b/src/Avalonia.Controls/Button.cs index 2e115463ac..1e0fa01cc3 100644 --- a/src/Avalonia.Controls/Button.cs +++ b/src/Avalonia.Controls/Button.cs @@ -91,7 +91,11 @@ namespace Avalonia.Controls CommandProperty.Changed.Subscribe(CommandChanged); IsDefaultProperty.Changed.Subscribe(IsDefaultChanged); IsCancelProperty.Changed.Subscribe(IsCancelChanged); - PseudoClass