public Window GetWindow <TView, TViewModel>(IEnumerable <Action <TView> > viewActions, IEnumerable <Action <TViewModel> > viewModelActions, object[] additionalViewArgs, object[] additionalViewModelArgs) where TView : FrameworkElement where TViewModel : class { if (!typeof(TView).BaseType.IsEquivalentTo(typeof(Window))) { throw new ArgumentException($"{typeof(TView).Name} is not a Window"); } IBinding binding = GetBinding <TView>(); binding.BindingAdditionalArguments = additionalViewArgs; binding.ServiceAdditionalArguments = additionalViewModelArgs; Overlooker.CheckViewModelBinding <TView, TViewModel>(_viewModelsBindings); TView view = CreateView <TView>(binding); foreach (var action in viewActions) { action?.Invoke(view); } foreach (var action in viewModelActions) { action?.Invoke(view.DataContext as TViewModel); } return(view as Window); }
public IView <TView, TViewModel> ResolveView <TView, TViewModel>() where TView : FrameworkElement where TViewModel : class { Overlooker.CheckExistenceBinding <TView>(_controllerModule.Bindings); Overlooker.CheckViewModelBinding <TView, TViewModel>(_controllerModule.Bindings); return(new ViewResolver <TView, TViewModel>(_viewFactory)); }
public IControllerConfigurator <TView, TViewModel> GetConfigs <TView, TViewModel>() where TView : FrameworkElement where TViewModel : class { Overlooker.CheckExistenceBinding <TView>(_controllerModule.Bindings); Overlooker.CheckViewModelBinding <TView, TViewModel>(_controllerModule.Bindings); return(new ControllerConfigurator <TView, TViewModel>(_viewFactory)); }
public TView GetView <TView, TViewModel>(Action <TViewModel> viewModelAction) where TView : FrameworkElement where TViewModel : class { IBinding binding = GetBinding <TView>(); Overlooker.CheckViewModelBinding <TView, TViewModel>(_viewModelsBindings); TView view = CreateView <TView>(binding); viewModelAction?.Invoke(view.DataContext as TViewModel); return(view); }
public TView GetView <TView, TViewModel>(Action <TViewModel> viewModelAction, params object[] viewModelArgs) where TView : FrameworkElement where TViewModel : class { IBinding binding = GetBinding <TView>(); Overlooker.CheckViewModelBinding <TView, TViewModel>(_viewModelsBindings); binding.ServiceConstructorArguments = viewModelArgs; TView view = CreateView <TView>(binding); viewModelAction?.Invoke(view.DataContext as TViewModel); return(view); }
private IBinding GetBinding <TKey>() { Overlooker.CheckExistenceBinding <TKey>(_viewModelsBindings); return(_viewModelsBindings.GetBinding <TKey>()); }