public ITdiPage OpenTdiTab <TTab>(DialogViewModelBase master, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TTab : ITdiTab { var types = new Type[] { }; var values = new object[] { }; return(OpenTdiTab <TTab>(master, types, values, options, addingRegistrations)); }
public IPage <TViewModel> OpenViewModelOnTdi <TViewModel>(ITdiTab master, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TViewModel : DialogViewModelBase { var types = new Type[] { }; var values = new object[] { }; return(OpenViewModelOnTdiTypedArgs <TViewModel>(master, types, values, options, addingRegistrations)); }
protected IPage OpenViewModelInternal(IPage masterPage, OpenPageOptions options, Func <string> makeHash, Func <string, IPage> makePage) { string hash = null; if (!options.HasFlag(OpenPageOptions.IgnoreHash)) { hash = makeHash(); } IPage openPage = null; if (options.HasFlag(OpenPageOptions.AsSlave)) { if (masterPage == null) { throw new InvalidOperationException($"Отсутствует главная страница для добавляемой подчиненой страницы."); } if (hash != null) { openPage = masterPage.SlavePagesAll.Select(x => x.SlavePage).FirstOrDefault(x => x.PageHash == hash); } if (openPage != null) { SwitchOn(openPage); } else { openPage = MakePageAndCatchAborting(makePage, hash); if (openPage == null) { return(null); } (masterPage as IPageInternal).AddSlavePage(openPage); OpenSlavePage(masterPage, openPage); } } else { if (hash != null) { openPage = IndependentPages.FirstOrDefault(x => x.PageHash == hash); } if (openPage != null) { SwitchOn(openPage); } else { openPage = MakePageAndCatchAborting(makePage, hash); if (openPage == null) { return(null); } OpenPage(masterPage, openPage); } } ViewModelOpened?.Invoke(this, new ViewModelOpenedEventArgs(openPage)); return(openPage); }
public ITdiPage OpenTdiTabNamedArgs <TTab>(DialogViewModelBase master, IDictionary <string, object> ctorArgs, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TTab : ITdiTab { return((ITdiPage)OpenViewModelInternal( FindPage(master), options, () => hashGenerator?.GetHashNamedArgs <TTab>(null, ctorArgs), (hash) => tdiPageFactory.CreateTdiPageNamedArgs <TTab>(ctorArgs, hash, addingRegistrations) )); }
public ITdiPage OpenTdiTab <TTab>(DialogViewModelBase master, Type[] ctorTypes, object[] ctorValues, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TTab : ITdiTab { return((ITdiPage)OpenViewModelInternal( FindPage(master), options, () => hashGenerator?.GetHash <TTab>(null, ctorTypes, ctorValues), (hash) => tdiPageFactory.CreateTdiPageTypedArgs <TTab>(ctorTypes, ctorValues, hash, addingRegistrations) )); }
public ITdiPage OpenTdiTabOnTdi <TTab, TCtorArg1, TCtorArg2>(ITdiTab masterTab, TCtorArg1 arg1, TCtorArg2 arg2, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TTab : ITdiTab { var types = new Type[] { typeof(TCtorArg1), typeof(TCtorArg2) }; var values = new object[] { arg1, arg2 }; return(OpenTdiTabOnTdi <TTab>(masterTab, types, values, options, addingRegistrations)); }
public IPage <TViewModel> OpenViewModelOnTdiTypedArgs <TViewModel>(ITdiTab master, Type[] ctorTypes, object[] ctorValues, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TViewModel : DialogViewModelBase { return((IPage <TViewModel>)OpenViewModelInternal( FindOrCreatePage(master), options, () => hashGenerator?.GetHash <TViewModel>(null, ctorTypes, ctorValues), (hash) => viewModelsFactory.CreateViewModelTypedArgs <TViewModel>(null, ctorTypes, ctorValues, hash, addingRegistrations) )); }
public IPage <TViewModel> OpenViewModelNamedArgs <TViewModel>(DialogViewModelBase master, IDictionary <string, object> ctorArgs, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TViewModel : DialogViewModelBase { return((IPage <TViewModel>)OpenViewModelInternal( FindPage(master), options, () => hashGenerator?.GetHashNamedArgs <TViewModel>(master, ctorArgs), (hash) => GetPageFactory <TViewModel>().CreateViewModelNamedArgs <TViewModel>(master, ctorArgs, hash, addingRegistrations) )); }
public IPage <TViewModel> OpenViewModel <TViewModel, TCtorArg1, TCtorArg2, TCtorArg3>(DialogViewModelBase master, TCtorArg1 arg1, TCtorArg2 arg2, TCtorArg3 arg3, OpenPageOptions options = OpenPageOptions.None, Action <ContainerBuilder> addingRegistrations = null) where TViewModel : DialogViewModelBase { var types = new Type[] { typeof(TCtorArg1), typeof(TCtorArg2), typeof(TCtorArg3) }; var values = new object[] { arg1, arg2, arg3 }; return(OpenViewModelTypedArgs <TViewModel>(master, types, values, options, addingRegistrations)); }