Отображение вида внутри региона в первый раз занимает около 5-10 секунд медленно, и пользовательский интерфейс на этот период зависает в моем приложении Prism Composite WPF. В последующие разы View загружается относительно быстрее без зависания пользовательского интерфейса. Представление состоит из элемента управления Devexpress WPF Grid, а данные извлекаются из базы данных SQL. Я не думаю, что это проблема с элементом управления / привязкой сетки, хотя, даже если я удалю привязки с помощью элемента управления сеткой, View потребуется почти столько же времени, чтобы отобразить себя в регионе.
Это код, который я использую для загрузки представления в область, определенную внутри оболочки:
public Action<MenuModel> LoadViewRequest { get; set; }
public SyncController(IUnityContainer container, IEventAggregator eventAggregator, IRegionManager regionManager)
{
this.container = container;
this.eventAggregator = eventAggregator;
this.regionManager = regionManager;
this.LoadViewRequest = (menuItem) => { LoadRequestedView(menuItem); };
this.eventAggregator.GetEvent<ViewRequestedEvent>().Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Sync");
}
private void LoadRequestedView(MenuModel menuItem)
{
try
{
IViewModel viewModel = this.container.Resolve<SynchronizeViewModel>();
this.regionManager.Regions["ViewRegion"].Add(viewModel.View);
this.regionManager.Regions["ViewRegion"].Activate(viewModel.View);
viewModel.DisplayName = menuItem.Description;
this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description);
}
catch (ResolutionFailedException) { }
}
В чем может быть причина такого поведения? Почему View загружается почти мгновенно при второй загрузке? Означает ли это, что даже после удаления View из региона мое приложение содержит ссылку на View?