Как обновить пользовательский интерфейс приложения в стиле Metro?

Я пытаюсь обновить/обновить пользовательский интерфейс приложения в стиле Metro, чтобы отразить изменения.
Чтобы перерисовать элементы управления в Windows Forms, вы можете просто использовать:

this.Refresh();    

Как добиться аналогичного результата в приложениях в стиле Metro?

Рассмотрим этот простой пример на C#:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    btnStatus.Content = "Test started";
    Task.Delay(3000); // Wait 3 seconds
    btnStatus.Content = "Test Ended"
} 

Что мне нужно сделать, так это: показать сообщение «начало», подождать несколько секунд, а затем показать сообщение «конец». Однако, когда это запускается, btnStatus сразу показывает «TestEnded», как если бы первые 2 оператора не выполнялись.

Как я могу это исправить?

Я просмотрел: Как обновить пользовательский интерфейс в приложении метро. ? но это не помогло.


person nv.snow    schedule 17.08.2012    source источник


Ответы (1)


Код, который вы написали, неверен. Task.Delay() работает асинхронно, поэтому ваш код естественным образом продолжается.

Это будет работать корректно...

private async void Button_Click(object sender, RoutedEventArgs e)
{
    btnStatus.Content = "Test started";
    await Task.Delay(3000); // Wait 3 seconds
    btnStatus.Content = "Test Ended"
} 

Обратите внимание на добавление клавиши await.

person Jeff Brand    schedule 17.08.2012