Существует проблема с обновлением пользовательского интерфейса в WPF.
У меня есть такой код:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
LongTimeMethod(); //some long operation
}
Проблема в том, что до тех пор, пока LongTimeMethod не завершится (то есть обработчик событий завершится), Label.Visibility и TextBox.Text не будут изменены.
Пока я решил это так:
private void ButtonClick_EventHandler(object sender, RoutedEventArgs e)
{
Label.Visibility = Visibility.Visible;
TextBox.Text = "Processing...";
Dispatcher.BeginInvoke(new Action(LongTimeMethod),
DispatcherPriority.Background);
}
Есть ли какое-либо другое решение без использования диспетчера?Вызов this.UpdateLayout () не помогает.