Хотя это работает, у меня есть проблема с удобством использования. Поведение по умолчанию для открытия ContentDialog - это установить фокус на первом интерактивном элементе, который является флажком. Я не хочу этого. Я хочу сосредоточиться на кнопке по умолчанию, которая является закрытой. Это самый безопасный неразрушающий элемент пользовательского интерфейса. обработчик событий, но навигация по последующей иерархии не является простым (
Код: Выделить всё
FindName("CloseButton")
Я также попытался добавить обработчик событий gettiveFocus для флага и выполнить args.tracancel () Если диалог только что открылся, но это фактически в итоге начнуло фокус на родительское окно, которое Определенно не то, что я хочу! < /p>
, чтобы воссоздать эту проблему: < /p>
- Создать новый проект в визуализации Студия. Выберите «Пустое приложение, упакованное (winui 3 в настольном компьютере)» в качестве шаблона проекта.
- Назовите проект "Checkboxtest".
< /li>
заменить mainwindow.xaml < /code> на XAML ниже: < /p>
< /li>
< /ol>Заменить код mainwindow.xaml.cs с:Код: Выделить всё
Код: Выделить всё
using System;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Input;
namespace CheckboxTest;
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
this.Content.KeyUp += Content_KeyUp;
}
private async void Content_KeyUp(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Delete)
{
DeleteConfirmationDialog.XamlRoot = Content.XamlRoot;
if (await DeleteConfirmationDialog.ShowAsync() == ContentDialogResult.Primary)
{
// Do delete operation...
}
}
}
}
- Запустите проект.
- Нажмите Удалить и увидите, что в появившемся диалоговом окне подтверждения установлен флажок.
Подробнее здесь: https://stackoverflow.com/questions/793 ... log-button