protected override void ConfigureViewModelLocator() { ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) => { string?viewName = viewType.FullName; viewName = viewName?.Replace(".Views.", ".ViewModels."); string?viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName; string?suffix = viewName != null && (viewName.EndsWith("View") | viewName.EndsWith("Window")) ? "Model" : "ViewModel"; string viewModelName = string.Format(CultureInfo.InvariantCulture, "{0}{1}, {2}", viewName, suffix, viewAssemblyName); return(Type.GetType(viewModelName)); }); ViewModelLocationProvider.SetDefaultViewModelFactory((view, type) => { object vm = ContainerLocator.Container.Resolve(type); if (vm is IViewAwareStatusInjectionAware contextViewModel) { IViewAwareStatus service = ContainerLocator.Container.Resolve <IViewAwareStatus>(); service.InjectContext(view); contextViewModel.InitialiseViewAwareService(service); return(vm); } if (vm is IWindowAwareStatusInjectionAware contextWindowModel) { IWindowAwareStatus service = ContainerLocator.Container.Resolve <IWindowAwareStatus>(); service.InjectContext(view); contextWindowModel.InitialiseWindowAwareService(service); return(vm); } return(vm); }); }
public void InitialiseWindowAwareService(IWindowAwareStatus window) { window.Loaded += Window_Loaded; window.Activated += Window_Activated; window.WindowClosing += Window_WindowClosing;; }