Просмотр исходного кода

avalonia: TextDialogView now automatically focuses text box when opened

Kenric Nugteren 6 дней назад
Родитель
Сommit
0be8a5e268

+ 53 - 55
InABox.Avalonia/Dialogs/TextDialog/TextDialogView.axaml

@@ -2,60 +2,58 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-			 xmlns:components="using:InABox.Avalonia.Components"
-			 xmlns:dialogs="clr-namespace:InABox.Avalonia.Dialogs"
-			 mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+             xmlns:components="using:InABox.Avalonia.Components"
+             xmlns:dialogs="clr-namespace:InABox.Avalonia.Dialogs"
+             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="InABox.Avalonia.Dialogs.TextDialogView"
-			 x:DataType="dialogs:TextDialogViewModel">
-	
-	<UserControl.Resources>
-		<dialogs:TextDialogVerticalAlignmentConverter x:Key="VerticalAlignmentConverter"/>
-	</UserControl.Resources>
-	
-	<Grid>
-		
-		<Grid.RowDefinitions>
-			<RowDefinition Height="Auto"/>
-			<RowDefinition Height="*"/>
-			<RowDefinition Height="Auto"/>
-		</Grid.RowDefinitions>
-		
-		<Grid.ColumnDefinitions>
-			<ColumnDefinition Width="Auto"/>
-			<ColumnDefinition Width="*"/>
-			<ColumnDefinition Width="Auto"/>
-		</Grid.ColumnDefinitions>
-		
-		<Label
-			Grid.Row="0"
-			Grid.Column="0"
-			Grid.ColumnSpan="3"
-			Margin="0,0,0,10"
-			Content="{Binding Title}" />
-		
-		<TextBox 
-			Grid.Row="1" 
-			Grid.Column="0" 
-			Grid.ColumnSpan="3"
-			Text="{Binding Text}" 
-			AcceptsReturn="{Binding Multiline}"
-			Margin="0,0,0,10"
-			VerticalContentAlignment="{Binding Multiline,Converter={StaticResource VerticalAlignmentConverter}}"
-			TextWrapping="Wrap"/>
-		
-		<Button 
-			Grid.Row="2" 
-			Grid.Column="0" 
-			Content="Cancel" 
-			Command="{Binding CancelCommand}" 
-			Classes="Standard"/>
-		
-		<Button 
-			Grid.Row="2" 
-			Grid.Column="2" 
-			Content="OK" 
-			Command="{Binding OKCommand}" 
-			Classes="Standard"/>
-		
-	</Grid>
+             x:DataType="dialogs:TextDialogViewModel">
+    
+    <UserControl.Resources>
+        <dialogs:TextDialogVerticalAlignmentConverter x:Key="VerticalAlignmentConverter"/>
+    </UserControl.Resources>
+    
+    <Grid>
+        
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="Auto"/>
+        </Grid.RowDefinitions>
+        
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="Auto"/>
+            <ColumnDefinition Width="*"/>
+            <ColumnDefinition Width="Auto"/>
+        </Grid.ColumnDefinitions>
+        
+        <Label
+            Grid.Row="0"
+            Grid.Column="0"
+            Grid.ColumnSpan="3"
+            Margin="0,0,0,10"
+            Content="{Binding Title}" />
+        
+        <TextBox Name="TextBox"
+                 Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3"
+                 Text="{Binding Text}" 
+                 AcceptsReturn="{Binding Multiline}"
+                 Margin="0,0,0,10"
+                 VerticalContentAlignment="{Binding Multiline,Converter={StaticResource VerticalAlignmentConverter}}"
+                 TextWrapping="Wrap"/>
+        
+        <Button 
+            Grid.Row="2" 
+            Grid.Column="0" 
+            Content="Cancel" 
+            Command="{Binding CancelCommand}" 
+            Classes="Standard"/>
+        
+        <Button 
+            Grid.Row="2" 
+            Grid.Column="2" 
+            Content="OK" 
+            Command="{Binding OKCommand}" 
+            Classes="Standard"/>
+        
+    </Grid>
 </UserControl>

+ 7 - 0
InABox.Avalonia/Dialogs/TextDialog/TextDialogView.axaml.cs

@@ -21,6 +21,13 @@ public partial class TextDialogView : UserControl
     public TextDialogView()
     {
         InitializeComponent();
+
+        TextBox.AttachedToVisualTree += TextBox_AttachedToVisualTree;
+    }
+
+    private void TextBox_AttachedToVisualTree(object? sender, VisualTreeAttachmentEventArgs e)
+    {
+        TextBox.Focus();
     }
 
     protected override Size MeasureOverride(Size availableSize)