/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Dialogs/DynamicDialog.xaml.cs
71 строка
2 KB
yair100
Code Quality: Fix dynamic dialog input focus race
30 июл 2026, 23:19
30 июл 2026, 23:19
4ff965f
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; namespace Files.App.Dialogs { public sealed partial class DynamicDialog : ContentDialog, IDisposable { private FrameworkElement RootAppElement => (FrameworkElement)MainWindow.Instance.Content; public DynamicDialogViewModel ViewModel { get => (DynamicDialogViewModel)DataContext; private set => DataContext = value; } public DynamicDialogResult DynamicResult { get => ViewModel.DynamicResult; } public new Task<ContentDialogResult> ShowAsync() { return this.TryShowAsync(); } public DynamicDialog(DynamicDialogViewModel dynamicDialogViewModel) { InitializeComponent(); dynamicDialogViewModel.HideDialog = Hide; ViewModel = dynamicDialogViewModel; } private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { ViewModel.PrimaryButtonCommand.Execute(args); } private void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { ViewModel.SecondaryButtonCommand.Execute(args); } private void ContentDialog_CloseButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { ViewModel.CloseButtonCommand.Execute(args); } private void ContentDialog_KeyDown(object sender, Microsoft.UI.Xaml.Input.KeyRoutedEventArgs e) { ViewModel.KeyDownCommand.Execute(e); } // The dialog moves focus to its default button after Opened is raised, so handlers // that focus the display content must be dispatched to run after that private void ContentDialog_Opened(ContentDialog sender, ContentDialogOpenedEventArgs args) { DispatcherQueue.TryEnqueue(() => ViewModel?.DisplayControlOnLoadedCommand?.Execute(null)); } public void Dispose() { ViewModel?.Dispose(); ViewModel = null; } } }