From 386be0fa0ba5545fe584cd44a03972489081c762 Mon Sep 17 00:00:00 2001 From: yoyo Date: Sun, 26 Jul 2026 16:12:29 +0800 Subject: [PATCH] fix(TextBox): initialize command states in constructor (#21859) --- src/Avalonia.Controls/TextBox.cs | 1 + tests/Avalonia.Controls.UnitTests/TextBoxTests.cs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 408e837043..c8e37c132a 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -431,6 +431,7 @@ namespace Avalonia.Controls _undoRedoHelper = new UndoRedoHelper(this); _selectedTextChangesMadeSinceLastUndoSnapshot = 0; _hasDoneSnapshotOnce = false; + UpdateCommandStates(); UpdatePseudoclasses(); } diff --git a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs index 39dd5efa1d..b8e781840f 100644 --- a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs @@ -1549,6 +1549,19 @@ namespace Avalonia.Controls.UnitTests } } + [Fact] + public void Empty_TextBox_Initializes_Clipboard_Command_States() + { + using (UnitTestApplication.Start(Services)) + { + var tb = new TextBox(); + + Assert.False(tb.CanCopy); + Assert.False(tb.CanCut); + Assert.True(tb.CanPaste); + } + } + [Fact] public void Command_States_Update_When_ReadOnly_And_PasswordChar_Change() {