Для нашего приложения нам нужно отображать индикатор занятости во время навигации, поскольку для загрузки некоторых элементов управления требуется время. Обычно для длительной работы я создаю отдельную задачу и запускаю индикатор занятости в потоке пользовательского интерфейса, но в этом случае я не мог этого сделать.
Как только индикатор занятости начал вращаться, его побеспокоили Frame.Source или Frame.Navigate, которые также выполняются в потоке пользовательского интерфейса. настолько занятый индикатор спрятан.
Ниже приведен фрагмент кода, который я использовал для навигации. Это выполняется как отдельная задача.
public virtual void NavigateTo(string pageKey, object parameter)
{
Frame frame = null;
Action actionToExecuteOnUIContext = () =>
{
frame = GetDescendantFromName(Application.Current.MainWindow, "ContentFrame") as Frame;
if (frame != null)
{
frame.LoadCompleted -= frame_LoadCompleted;
frame.LoadCompleted += frame_LoadCompleted;
frame.Source = _pagesByKey[pageKey];
frame.DataContext = parameter;
}
};
Application.Current.Dispatcher.BeginInvoke(actionToExecuteOnUIContext, DispatcherPriority.Normal);
}
}
Любой способ исправить это или альтернатива
WPF и RadBusyIndicator и .Net 4.5