Как создать псевдосинхронную загрузку в WP7 - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть класс с общедоступным методом DownloadAsync, который загружает контент через Webclient. Я создаю объект этого класса и вызываю метод загрузки.

Моя проблема: я хотел бы заблокировать элементы в пользовательском интерфейсе (например, кнопки), пока загрузка не будет завершена. Я не мог найти никакого решения до сих пор.

Одна идея заключается в следующем: я мог бы вызвать MessageBox с сообщением типа «загрузка завершена» в методе Downloadcomplete и как-то вызвать Eventhandler для MessageBox. Но как?

Есть идеи, как решить мою проблему?

РЕДАКТИРОВАТЬ: Я знаю, что горячо отключить элементы, но из-за асинхронной загрузки в методе загрузки, я не знаю, когда загрузка заканчивается, чтобы включить обратно элементы

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

добавьте событие в ваш класс данных, а после завершения загрузки запустите обработчик события.

тогда на вашей странице сделайте что-то подобное в инициализаторе

  BusyMessage.Visibility = Visibility.Visible;
  this.DataContext = MYDownloaderClass.downloadedData;
  MyDownloaderClass.hasFinished += new EventHandler(hasFinished);

}

void hasFinished(object sender, EventArgs e){
  BusyMessage.Visibility = Visibility.Collapsed
}
0 голосов
/ 01 декабря 2011

Попробуйте индикатор занятости с наложением.http://www.minddriven.de/index.php/technology/dot-net/windows-phone/wp7-xaml-viewmodel-busy-indicator

0 голосов
/ 01 декабря 2011

Вы должны просто отключить все элементы - установите IsEnabled на false для кнопок и т. Д. Если вы хотите быстрое и грязное решение - вы можете наложить на экран прямоугольник, границу, сетку или всплывающее окно.

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