2

Мое приложение должно загрузить usercontrol в MainWindow при запуске. Однако инициализация пользовательского контроля выполняется медленно. (не из-за загрузки бизнес-данных, я уже отделяю интерфейс от бизнес-уровня)Отображение индикатора занятости во время ожидания инициализации usercontrol

Что я хочу сделать, ожидая инициализации пользовательского контроля, индикатор занятости появится и исчезнет, ​​когда инициализация Пользовательский контроль завершен.

Прямо сейчас у меня есть свойство IsBusy в MainViewModel и является привязкой к активному указателю в MainWindow.

Управление дочерним элементом пользователя осуществляется через contentcontrol.

presenter.Content = new ChildUserControl(); 
//presenter is the contentcontrol in MainWindow 

Однако, как запустить и инициализацию и отображение занятого индикатора одновременно? Кажется, мне нужны разные потоки для решения этой проблемы.

Однако при запуске инициализации в другом потоке при отображении потока основного пользовательского интерфейса индикатор занятости не будет работать, поскольку дочерний элемент управления в другом потоке не может быть помещен в его родительский элемент управления, который в этом случае является MainWindow.

Любые идеи по этому поводу?

ответ

1

Я сам реализовал его. А именно, у меня был сценарий, когда у нас была загрузка документа XPS (это было очень медленно), а затем мне пришлось реализовать spinner («индикатор занятости»). Но это не сработало, потому что они были в одной теме.

Теперь Dwayne придумал умный способ, как многопоточно это, и это сработало. http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx

+0

Ницца! Это отлично подходит для моей цели! – user2127480

0

Как насчет отображения анимированного курсора загрузки? Windows уже обрабатывает потоки на мыши. Раньше у меня была эта проблема, и я реализовал свою собственную анимацию загрузки в другом потоке, но у меня были проблемы с приоритетами рендеринга, в результате чего основной исполняемый код был медленным, если курсор мыши не двигался поверх диалога прогресса. https://stackoverflow.com/a/307020/2247427

+0

Спасибо за ваш ввод. – user2127480

 Смежные вопросы

  • Нет связанных вопросов^_^