Browse Source

TextBox: Add :empty pseudoclass

Maksym Katsydan 5 years ago
parent
commit
87afc2ffa0
1 changed files with 17 additions and 0 deletions
  1. 17 0
      src/Avalonia.Controls/TextBox.cs

+ 17 - 0
src/Avalonia.Controls/TextBox.cs

@@ -157,6 +157,8 @@ namespace Avalonia.Controls
                 horizontalScrollBarVisibility,
                 BindingPriority.Style);
             _undoRedoHelper = new UndoRedoHelper<UndoRedoState>(this);
+
+            UpdatePseudoclasses();
         }
 
         public bool AcceptsReturn
@@ -378,6 +380,16 @@ namespace Avalonia.Controls
             }
         }
 
+        protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
+        {
+            base.OnPropertyChanged(change);
+
+            if (change.Property == TextProperty)
+            {
+                UpdatePseudoclasses();
+            }
+        }
+
         protected override void OnGotFocus(GotFocusEventArgs e)
         {
             base.OnGotFocus(e);
@@ -1100,6 +1112,11 @@ namespace Avalonia.Controls
             SelectionEnd = CaretIndex;
         }
 
+        private void UpdatePseudoclasses()
+        {
+            PseudoClasses.Set(":empty", string.IsNullOrWhiteSpace(Text));
+        }
+
         private bool IsPasswordBox => PasswordChar != default(char);
 
         UndoRedoState UndoRedoHelper<UndoRedoState>.IUndoRedoHost.UndoRedoState