Диалог хода разработки материала WPF не отображается во время выполнения задачи - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь открыть диалоговое окно дизайна материала, пока какая-то задача выполняется в фоновом режиме. Поэтому я обернул свою DockPanel с помощью DialogHost <materialDesign:DialogHost> и перегрузил метод Show делегатами обратного вызова.

Когда я нажимаю кнопку, во время выполнения задачи должен отображаться диалог хода выполнения, например,

private async void LoadConfigButton_Click(object sender, RoutedEventArgs e)
{
            var dialogContent = new TextBlock
            {
                Text = "Loading.... Please wait.",
                Margin = new Thickness(20)
            };
            await DialogHost.Show(dialogContent,
                new DialogOpenedEventHandler((object senderDialog, DialogOpenedEventArgs args) =>
                {
                // DoStuffMethod();
                }));

}

Теперь я вижу диалог прогресса, но только после завершения "Do stuff method".

Что мне здесь не хватает?

1 Ответ

1 голос
/ 14 апреля 2019

Нет указания на то, что ваш

// DoStuffMethod();

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

IE

App.Current.Dispatcher.Invoke(async () => DoStuffMethod());

Я только что прогуглил это, но также помню, что объект диспетчера должен иметь InvokeAsync() Вы также можете вызвать метод.

Вы можете получить доступ к диспетчеру, как показано выше, но ваш элемент управления также должен иметь доступное свойство Dispatcher, которое можно использовать таким же образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...