fix: fix navigation issue for messagebox and drawer.

This commit is contained in:
rabbitism
2024-09-03 17:05:33 +08:00
parent 36aa3b9dec
commit abe42fc189
5 changed files with 29 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Ursa.Common;
using Ursa.Controls.Options;
@@ -60,7 +61,8 @@ public static class Drawer
var drawer = new DefaultDrawerControl
{
Content = new TView(),
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureDefaultDrawer(drawer, options);
host.AddModalDrawer(drawer);
@@ -75,7 +77,8 @@ public static class Drawer
var drawer = new DefaultDrawerControl
{
Content = control,
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureDefaultDrawer(drawer, options);
host.AddModalDrawer(drawer);
@@ -92,7 +95,8 @@ public static class Drawer
var drawer = new DefaultDrawerControl
{
Content = view,
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureDefaultDrawer(drawer, options);
host.AddModalDrawer(drawer);
@@ -152,7 +156,8 @@ public static class Drawer
var dialog = new CustomDrawerControl
{
Content = new TView(),
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureCustomDrawer(dialog, options);
host.AddModalDrawer(dialog);
@@ -167,7 +172,8 @@ public static class Drawer
var dialog = new CustomDrawerControl
{
Content = control,
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureCustomDrawer(dialog, options);
host.AddModalDrawer(dialog);
@@ -185,7 +191,8 @@ public static class Drawer
var dialog = new CustomDrawerControl
{
Content = view,
DataContext = vm
DataContext = vm,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
ConfigureCustomDrawer(dialog, options);
host.AddModalDrawer(dialog);

View File

@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input;
namespace Ursa.Controls;
@@ -63,7 +64,8 @@ public static class MessageBox
Content = message,
Title = title,
Buttons = button,
MessageIcon = icon
MessageIcon = icon,
[KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle
};
host.AddModalDialog(messageControl);
var result = await messageControl.ShowAsync<MessageBoxResult>();

View File

@@ -2,7 +2,9 @@ using Avalonia;
using Avalonia.Animation;
using Avalonia.Animation.Easings;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Styling;
using Avalonia.VisualTree;
using Irihi.Avalonia.Shared.Shapes;
using Ursa.Common;
using Ursa.Controls.OverlayShared;
@@ -67,8 +69,8 @@ public partial class OverlayDialogHost
{
await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask));
}
control.Focus();
var element = control.GetVisualDescendants().OfType<InputElement>().FirstOrDefault(a => a.Focusable);
element?.Focus();
}
private void SetDrawerPosition(DrawerControlBase control)