В моем главном окне, у меня естьWPF и пользовательский интерфейс сублимационной
- навигации TreeView на левом
- ведущего контента на право
- какой-то пожалуйста, подождите панель (с шириной и высотой приблизительно 50), который отображает загрузочный гиф; видимость этой панели привязана к объекту mymodel bool IsBusy моего главного окна.
Идея показывает эту панель, когда инициализируется презентатор содержания.
Выбор элемента в TreeView:
- устанавливает BOOL свойство IsBusy к истинным (таким образом ожидания панель с GIF показывает загрузки)
- устанавливает выступающему контента
Чтобы инициализировать этот контент, я использую задачу в моей модели основного окна, чтобы пользовательский интерфейс оставался отзывчивым. В рамках этой задачи, когда мне нужно обновить пользовательский интерфейс, я использую Application.Current.Dispatcher.BeginInvoke для управления моим потоком пользовательского интерфейса. Таким образом, моя загрузка gif воспроизводится гладко, когда задача обрабатывается в другом потоке.
Теперь, скажем, у меня есть DataGrid с двадцатью колоннами в моем контенте ведущего, который привязываться к ObservableCollection в моей основной ViewModel. В моей задаче, если я добавлю 1000 элементов в эту коллекцию, когда пользовательский интерфейс обновится, чтобы отобразить содержимое, он перестанет отвечать на несколько десятых секунды и мой gif-стоп; в основном пользовательский интерфейс замерзает.
Как я могу обеспечить, чтобы панель ожидания всегда оставалась отзывчивой, и gif продолжает играть гладко?