WinUI 3 – Как установить фокус на кнопку ContentDialogC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 WinUI 3 – Как установить фокус на кнопку ContentDialog

Сообщение Anonymous »

У меня есть приложение WinUI 3, написанное на C#, которое отображает ContentDialog, чтобы попросить пользователя подтвердить удаление файлов. В диалоговом окне есть флажок, который пользователь может установить, чтобы скрыть диалоговое окно от отображения в будущем:
Изображение

Хотя это работает, у меня есть проблема с удобством использования. Поведение по умолчанию при открытии ContentDialog — установка фокуса на первый интерактивный элемент, которым является флажок. Я не хочу этого. Я хочу, чтобы фокус был на кнопке по умолчанию, то есть CloseButton. Это самый безопасный неразрушающий элемент пользовательского интерфейса.
Мне известен метод VisualTreeHelper.GetOpenPopupsForXamlRoot(), и я экспериментировал с ним в диалоговом окне «Открыто». обработчик событий, но навигация по последующей иерархии не является простой (

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • WinUI 3 – Как установить фокус на кнопку ContentDialog
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Winui 3 - Как установить фокус на кнопку ContentDialog
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Winui 3 - Как установить фокус на кнопку ContentDialog
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • WinUI 3 – Как установить фокус на кнопку ContentDialog
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Winui 3 - Как установить фокус на кнопку ContentDialog
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»