public NavigationParameter(INavigationService navigationService, IViewModelLocator viewModelLocator, IEventAggregator eventAggregator, IViewModelStateManager viewModelStateManager) { this.NavigationService = navigationService; this.ViewModelLocator = viewModelLocator; this.EventAggregator = eventAggregator; this.ViewModelStateManager = viewModelStateManager; }
public ModuleManager(IViewModelLocator viewModelLocator, IViewLocator viewLocator, IStateSerializer viewModelStateSerializer, bool allowSaveRestoreLayout, bool isTestingMode, bool keepViewModelsAlive = false) { this.keepViewModelsAlive = keepViewModelsAlive; this.allowSaveRestoreLayout = allowSaveRestoreLayout; this.isTestingMode = isTestingMode; this.viewModelLocator = viewModelLocator; this.viewLocator = viewLocator; this.viewModelStateSerializer = viewModelStateSerializer; }
/// <summary> /// Initializes static members of the <see cref="LogicBase"/> class. /// </summary> static LogicBase() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve <IViewModelLocator>(); _viewManager = dependencyResolver.Resolve <IViewManager>(); _viewPropertySelector = dependencyResolver.Resolve <IViewPropertySelector>(); ViewLoadManager = dependencyResolver.Resolve <IViewLoadManager>(); }
/// <summary> /// Creates an instance of <see cref="WindowManager"/>. /// </summary> /// <param name="viewModelLocator">The view-model locator.</param> /// <param name="viewModelBinder">The view-model binder.</param> public WindowManager(IViewModelLocator viewModelLocator, IViewModelBinder viewModelBinder) { if (viewModelLocator == null) throw new ArgumentNullException(nameof(viewModelLocator)); if (viewModelBinder == null) throw new ArgumentNullException(nameof(viewModelBinder)); _viewModelLocator = viewModelLocator; _viewModelBinder = viewModelBinder; }
public void LoadParameters(NavigationParameter navigationParameter) { this.view.EventAggregator = navigationParameter.EventAggregator; this.ViewModelLocator = navigationParameter.ViewModelLocator; if (this.isGeneric) { this.navigationParameter = navigationParameter; } }
Region(string regionName, IViewModelLocator viewModelLocator, IViewLocator viewLocator, IStateSerializer stateSerializer) { LogicalSerializationMode = LogicalSerializationMode.Enabled; this.RegionName = regionName; this.viewModelLocator = viewModelLocator; this.viewLocator = viewLocator; this.stateSerializer = stateSerializer; this.serviceManager = new WeakReferenceManager <IUIRegion>(); this.items = new List <RegionItem>(); }
public ResultsViewModel(IViewModelLocator viewModelLocator, IQuizInstanceRepository quizInstanceRepository) { if (viewModelLocator == null) throw new ArgumentNullException(nameof(viewModelLocator)); if (quizInstanceRepository == null) throw new ArgumentNullException(nameof(quizInstanceRepository)); _viewModelLocator = viewModelLocator; _quizInstanceRepository = quizInstanceRepository; Initialize(); }
public LifetimeEconomicValueViewModel(ISharedDataService sharedData, IViewModelLocator locator) : base(new Guid("6D2F7E48-8A1E-475C-8297-811D83F46CBE")) { Name = "Lifetime Economic Value"; _person = sharedData.Person; AddToolPages( new Page1(_person, locator.Mode), new Page2(this, locator.Mode)); }
public MainViewModel(IApplicationConfigurationService configurationService, IProcessManagementService processManagementService, IFileSystemService fileSystem, ISteamLocator steamLocator, IViewModelLocator vmLocator) { _configurationService = configurationService ?? throw new ArgumentNullException(nameof(configurationService)); _processManagementService = processManagementService ?? throw new ArgumentNullException(nameof(processManagementService)); _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); _steamLocator = steamLocator ?? throw new ArgumentNullException(nameof(steamLocator)); _vmLocator = vmLocator ?? throw new ArgumentNullException(nameof(vmLocator)); Servers = new ObservableCollection <ServerInformation>(); }
public BasicInformationToolViewModel(ISharedDataService dataService, IViewModelLocator locator) : base(new Guid("74EF5D9B-E6D1-4218-8755-C8349157FAAE")) { _person = dataService.Person; Name = "Basic Information"; AddToolPages( new Page1(this, locator.Mode), new Page2(this, locator.Mode), new Page3(this, locator.Mode)); }
public static void Register(IViewModelLocator locatorToRegister) { StaticViewModelLocator.logger.Log($"StaticViewModelLocator.Register(): entered with parameter type '{locatorToRegister.GetType()}'"); if (locatorToRegister == null) { StaticViewModelLocator.logger.Log($"StaticViewModelLocator.Register(): locatorToRegister is null", Contracts.Logger.Enums.LogLevel.Error); throw new ArgumentNullException("locatorToRegister"); } StaticViewModelLocator.locator = locatorToRegister; StaticViewModelLocator.logger.Log($"StaticViewModelLocator.Register(): exited"); }
public void ClassSetup() { navigationServiceMock = new Mock <INavigationService>(); homeTextServiceMock = new Mock <IHomeTextService>(); colorServiceMock = new Mock <IColorService>(); AttributeServiceSetup(); DependencyContainerSetup(); viewModelLocator = new ViewModelLocator(dependencyContainerMock.Object, attributeServiceMock.Object); }
protected App(INavigationService navigationService, IDialogService dialogService) { Container = new UnityContainer(); ViewModelLocator = new ViewModelLocator(Container); ServiceLocator = new UnityServiceLocator(Container); Microsoft.Practices.ServiceLocation.ServiceLocator.SetLocatorProvider(() => ServiceLocator); Container.RegisterInstance(navigationService); Container.RegisterInstance(dialogService); SetupContainer(Container); }
/// <summary> /// Initializes a new instance of the <see cref="NavigationService"/> class. /// </summary> /// <param name="statePersistor"> The state persistor. </param> /// <param name="viewModelLocator"> The ViewModel instance locator. </param> /// <param name="viewLocator"> The ViewLocator</param> /// <param name="platformNavigator"> The platform navigator. </param> public NavigationService( IViewLocator viewLocator, IViewModelLocator viewModelLocator, IStatePersistor statePersistor, IPlatformNavigator platformNavigator) { this.viewModelLocator = viewModelLocator; this.viewLocator = viewLocator; this.statePersistor = statePersistor; this.platformNavigator = platformNavigator; this.platformNavigator.BackNavigationRequested += this.PlatformBackNavigationRequested; }
/// <summary> /// Initializes a new instance of the <see cref="NavigationService" /> class. /// </summary> /// <param name="typeFactory">The type factory.</param> /// <param name="viewLocator">The view locator.</param> /// <param name="viewModelLocator">The view model locator.</param> /// <param name="viewModelFactory">The viewmodel factory.</param> public NavigationService(ITypeFactory typeFactory, IViewLocator viewLocator, IViewModelLocator viewModelLocator, IViewModelFactory viewModelFactory) { Argument.IsNotNull(() => typeFactory); Argument.IsNotNull(() => viewLocator); Argument.IsNotNull(() => viewModelLocator); _typeFactory = typeFactory; _viewLocator = viewLocator; _viewModelFactory = viewModelFactory; _viewModelLocator = viewModelLocator; Initialize(); }
public MainWindowViewModel(IModelBuilder modelBuilder, IEventAggregator eventAggregator, ITestManager testManager, IViewModelStateSerializer viewModelStateSerializer, IViewModelLocator viewModelLocator) { if (modelBuilder == null) { throw new ArgumentNullException("modelBuilder"); } if (eventAggregator == null) { throw new ArgumentNullException("eventAggregator"); } if (testManager == null) { throw new ArgumentNullException("testManager"); } if (viewModelStateSerializer == null) { throw new ArgumentNullException("viewModelStateSerializer"); } if (viewModelLocator == null) { throw new ArgumentNullException("viewModelLocator"); } _modelBuilder = modelBuilder; _eventAggregator = eventAggregator; _testManager = testManager; _viewModelStateSerializer = viewModelStateSerializer; _viewModelLocator = viewModelLocator; InitializeCommands(); _eventAggregator.GetEvent <ModelAddRequestEvent>().Subscribe(OnAddModelRequest); _cameraSubscriptionToken = _eventAggregator.GetEvent <CameraPositionChangedEvent>().Subscribe(OnCameraChange); _fieldModel = _modelBuilder.BuildModel <Field>(); State = TestState.NotConfigured; _models = new ObservableCollectionEx <IModel>(); ((INotifyPropertyChanged)_models).PropertyChanged += (sender, args) => RaisePropertyChanged(() => Models3D); Configuration = new TestConfiguration(_eventAggregator); }
public PlatformNavigator(IApplicationFrameProvider frameProvider, IViewModelLocator viewModelLocator, IEnumerable <INavigationInterceptor> navigationInterceptors) { this.frameProvider = frameProvider; this.viewModelLocator = viewModelLocator; this.navigationInterceptors = navigationInterceptors; this.interceptedViewTypes = new List <Type>(); this.InterceptBackNavigation = true; foreach (var interceptor in this.navigationInterceptors) { interceptor.ConditionChanged += this.InterceptorConditionChanged; } }
public PlatformNavigator(IApplicationFrameProvider frameProvider, IViewModelLocator viewModelLocator, IEnumerable<INavigationInterceptor> navigationInterceptors) { this.frameProvider = frameProvider; this.viewModelLocator = viewModelLocator; this.navigationInterceptors = navigationInterceptors; this.interceptedViewTypes = new List<Type>(); this.InterceptBackNavigation = true; foreach (var interceptor in this.navigationInterceptors) { interceptor.ConditionChanged += this.InterceptorConditionChanged; } }
/// <summary> /// Creates an instance of <see cref="WindowManager"/>. /// </summary> /// <param name="viewModelLocator">The view-model locator.</param> /// <param name="viewModelBinder">The view-model binder.</param> public WindowManager(IViewModelLocator viewModelLocator, IViewModelBinder viewModelBinder) { if (viewModelLocator == null) { throw new ArgumentNullException(nameof(viewModelLocator)); } if (viewModelBinder == null) { throw new ArgumentNullException(nameof(viewModelBinder)); } _viewModelLocator = viewModelLocator; _viewModelBinder = viewModelBinder; }
private void InitializeViewModelPaths() { // // ViewModels IViewModelLocator viewModelLocator = _serviceLocator.ResolveType <IViewModelLocator>(); viewModelLocator.NamingConventions.Add( "Sidekick.Windows.ViewModels.DataTemplates.[VW]ViewModel"); viewModelLocator.NamingConventions.Add( "Sidekick.Windows.ViewModels.Settings.[VW]ViewModel"); viewModelLocator.NamingConventions.Add( "Sidekick.Windows.ViewModels.SpacedRepetition.[VW]ViewModel"); viewModelLocator.NamingConventions.Add("Sidekick.MVVM.ViewModels.[VW]ViewModel"); viewModelLocator.NamingConventions.Add( "Sidekick.MVVM.ViewModels.SpacedRepetition.[VW]ViewModel"); }
public PlayViewModel(IViewModelLocator viewModelLocator, IQuizInstanceRepository quizInstanceRepository, IQuestionInstanceRepository questionInstanceRepository, IAnswerInstanceRepository answerInstanceRepository) { if (viewModelLocator == null) throw new ArgumentNullException(nameof(viewModelLocator)); if (quizInstanceRepository == null) throw new ArgumentNullException(nameof(quizInstanceRepository)); if (questionInstanceRepository == null) throw new ArgumentNullException(nameof(questionInstanceRepository)); if (answerInstanceRepository == null) throw new ArgumentNullException(nameof(answerInstanceRepository)); _viewModelLocator = viewModelLocator; _quizInstanceRepository = quizInstanceRepository; _questionInstanceRepository = questionInstanceRepository; _answerInstanceRepository = answerInstanceRepository; Initialize(); }
/// <summary> /// Called when the ViewModelKey property is changed on an UI element. /// </summary> /// <param name="d"></param> /// <param name="e"></param> private static void OnViewModelKeyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FrameworkElement fe = d as FrameworkElement; if (fe != null) { string key = e.NewValue as string; if (!string.IsNullOrEmpty(key)) { IViewModelLocator vmLocator = ServiceLocator.Instance.Resolve <IViewModelLocator>(); object viewModel; if (vmLocator.TryLocate(key, out viewModel) && viewModel != null) { fe.DataContext = viewModel; } } } }
public HomeViewModel(IViewModelLocator viewModelLocator, IQuizRepository quizRepository, ICategoryRepository categoryRepository, IQuestionRepository questionRepository) { if (viewModelLocator == null) throw new ArgumentNullException(nameof(viewModelLocator)); if (quizRepository == null) throw new ArgumentNullException(nameof(quizRepository)); if (categoryRepository == null) throw new ArgumentNullException(nameof(categoryRepository)); if (questionRepository == null) throw new ArgumentNullException(nameof(questionRepository)); _viewModelLocator = viewModelLocator; _quizRepository = quizRepository; _categoryRepository = categoryRepository; _questionRepository = questionRepository; Initialize(); }
public ExampleNuGetExplorerInitializationService( ILanguageService languageService, ICredentialProviderLoaderService credentialProviderLoaderService, INuGetProjectUpgradeService nuGetProjectUpgradeService, INuGetConfigurationService nuGetConfigurationService, IViewModelLocator vmLocator, ITypeFactory typeFactory, IExtensibleProjectLocator projectLocator, IAccentColorService accentColorService) : base(languageService, credentialProviderLoaderService, nuGetProjectUpgradeService, nuGetConfigurationService, vmLocator, typeFactory) { Argument.IsNotNull(() => projectLocator); Argument.IsNotNull(() => accentColorService); var serviceLocator = ServiceLocator.Default; // Example: override default project serviceLocator.RegisterType <IDefaultExtensibleProjectProvider, NuGetProjectProvider>(); serviceLocator.RegisterType <INuGetConfigurationResetService, ExampleNuGetConfigurationResetService>(); // initialize theme accentColorService.SetAccentColor(Colors.Orange); // add loggers serviceLocator.RegisterTypeAndInstantiate <SimpleLogListener>(); var catelListener = serviceLocator.RegisterTypeAndInstantiate <CatelLogListener>(); LogManager.AddListener(catelListener); // add upgrade listener serviceLocator.RegisterTypeAndInstantiate <ExampleUpgradeListener>(); // IApiPackageRegistry testing var apiRegistry = serviceLocator.ResolveType <IApiPackageRegistry>(); //apiRegistry.Register("PackageName.Api", "1.0.0-version"); // Example: changing storage for Credentials //credentialProviderLoaderService.SetCredentialPolicy(Enums.CredentialStoragePolicy.WindowsVaultConfigurationFallback); // Override size of packages queries nuGetConfigurationService.SetPackageQuerySize(40); }
RegionItem(IViewModelLocator viewModelLocator, IViewLocator viewLocator, IStateSerializer stateSerializer, string key, Func <object> factory, string viewModelName, string viewName, Type viewType, object parameter) { this.viewModelLocator = viewModelLocator; this.viewLocator = viewLocator; this.stateSerializer = stateSerializer; Key = key; Factory = factory; if (Factory == null) { ViewModelName = viewModelName; } ViewType = viewType; if (ViewType == null) { ViewName = viewName; } Parameter = parameter; }
protected override void OnStartup(StartupEventArgs e) { #if DEBUG LogManager.AddDebugListener(); #endif ServiceLocator.Default.RegisterType <Company.DataAccess.If.IDbConfigruation, Config>(); ServiceLocator.Default.RegisterType <Company.DataAccess.If.IDataAccess, Company.DataAccess.Ef.EfContext>(RegistrationType.Transient); ServiceLocator.Default.RegisterType <Company.DataQueries.If.IUnitOfWork, Company.DataQueries.Repositories.UnitOfWork>(RegistrationType.Transient); // TODO : Über Namesnkonvention regeln IViewModelLocator viewModelLocator = ServiceLocator.Default.ResolveType <IViewModelLocator>(); viewModelLocator.Register(typeof(Company.UI.Views.Main), typeof(Company.Core.ViewModels.MainVm)); viewModelLocator.Register(typeof(Company.UI.Views.Home), typeof(Company.Core.ViewModels.HomeVm)); viewModelLocator.Register(typeof(Company.UI.Views.Customer), typeof(Company.Core.ViewModels.CustomerVm)); base.OnStartup(e); // TODO : Themen die jetzt nicht beachtet wurden // Save und Cancel über IEdit abbilden (macht glaube ich auch Catel schon) // Mehrsprachenfähigkeit // ReadOnly bei keinem Schreibrecht // Das hinzufügen neuer Elemente }
/// <summary> /// Creates an instance of <see cref="FrameAdapter" />. /// </summary> /// <param name="frame">The frame to represent as a <see cref="INavigationService" />.</param> /// <param name="viewModelLocator">The view-model locator.</param> /// <param name="viewModelBinder">The view-model binder.</param> /// <param name="viewModelTypeResolver">The view-model type resolver.</param> public FrameAdapter(Frame frame, IViewModelLocator viewModelLocator, IViewModelBinder viewModelBinder, IViewModelTypeResolver viewModelTypeResolver) { if (frame == null) throw new ArgumentNullException(nameof(frame)); if (viewModelLocator == null) throw new ArgumentNullException(nameof(viewModelLocator)); if (viewModelBinder == null) throw new ArgumentNullException(nameof(viewModelBinder)); if (viewModelTypeResolver == null) throw new ArgumentNullException(nameof(viewModelTypeResolver)); _frame = frame; _viewModelLocator = viewModelLocator; _viewModelBinder = viewModelBinder; _viewModelTypeResolver = viewModelTypeResolver; _frame.Navigating += OnNavigating; _frame.Navigated += OnNavigated; // This could leak memory if we're creating and destorying navigation services regularly. var navigationManager = SystemNavigationManager.GetForCurrentView(); navigationManager.BackRequested += OnBackRequested; }
protected override void OnStartup(StartupEventArgs e) { #if DEBUG //LogManager.AddDebugListener(); #endif Log.Info("Starting application"); // Want to improve performance? Uncomment the lines below. Note though that this will disable // some features. // // For more information, see http://docs.catelproject.com/vnext/faq/performance-considerations/ // Log.Info("Improving performance"); // Catel.Windows.Controls.UserControl.DefaultCreateWarningAndErrorValidatorForViewModelValue = false; // Catel.Windows.Controls.UserControl.DefaultSkipSearchingForInfoBarMessageControlValue = true; // TODO: Register custom types in the ServiceLocator //Log.Info("Registering custom types"); //var serviceLocator = ServiceLocator.Default; //serviceLocator.RegisterType<IMyInterface, IMyClass>(); // To auto-forward styles, check out Orchestra (see https://github.com/wildgums/orchestra) // StyleHelper.CreateStyleForwardersForDefaultStyles(); IViewModelLocator viewModelLocator = ServiceLocator.Default.ResolveType <IViewModelLocator>(); viewModelLocator.Register(typeof(Views.MainWindow), typeof(MainWindowViewModel)); viewModelLocator.Register(typeof(Views.PersonView), typeof(PersonViewModel)); viewModelLocator.Register(typeof(Views.PersonTreeView), typeof(PersonTreeViewModel)); Log.Info("Calling base.OnStartup"); base.OnStartup(e); }
public MeetingViewModelFactory(IViewModelLocator locator, ISharedDataService sharedDataService) { _locator = locator; _sharedDataService = sharedDataService; }
public RegionItem(IViewModelLocator viewModelLocator, IViewLocator viewLocator, IStateSerializer stateSerializer, RegionItemInfo info) : this(viewModelLocator, viewLocator, stateSerializer, info.Key, null, info.ViewModelName, info.ViewName, null, null) { SetViewModelState(info.ViewModelState.With(x => x.State), info.ViewModelStateType); }
/// <summary> /// Finds an instance of the given ViewModel /// </summary> /// <typeparam name="TViewModel"> Type of ViewModel</typeparam> /// <param name="locator"> The locator </param> /// <returns> ViewModel instance </returns> public static async Task <TViewModel> GetInstanceAsync <TViewModel>(this IViewModelLocator locator) { return((TViewModel)(await locator.GetInstanceAsync(typeof(TViewModel)))); }
public static new void InitializeDocumentType(IUIVisualizerService uiVisualizerService, IViewModelLocator viewModelLocator) { Splat.Locator.CurrentMutable.Register(() => new DialogueResponseNodeView(), typeof(IViewFor <DialogueResponseNode>)); }
public static T ResolveViewModel <T>(this IViewModelLocator vml) => (T)vml?.ResolveViewModel(typeof(T).Name);
/// <summary> /// Initializes static members of the <see cref="UserControl"/> class. /// </summary> static UserControl() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; ViewModelLocator = dependencyResolver.Resolve<IViewModelLocator>(); }
public NavigationService(ISettings settings, IViewModelLocator locator) { _settings = settings; _locator = locator; _viewModelLocator.Add(Screen.Login, () => locator.LoginViewModel); _viewModelLocator.Add(Screen.AgentMeeting, () => locator.AgentMeetingViewModel); _viewModelLocator.Add(Screen.MeetingList, () => locator.MeetingListViewModel); _viewModelLocator.Add(Screen.ClientMeeting, () => locator.ClientMeetingViewModel); _viewModelLocator.Add(Screen.Lobby, () => locator.LobbyViewModel); // Setup the backstack var stackChanged = Observable.FromEventPattern<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>( h => _navigationStack.CollectionChanged += h, h => _navigationStack.CollectionChanged -= h).Select(p => p.EventArgs); var count = stackChanged.Select(_ => _navigationStack.Count); var backCmd = new ReactiveCommand(count.Select(v => v > 1)); _backCmdSub = backCmd.RegisterAsyncAction(_ => _navigationStack.Pop(), Scheduler.Immediate).Subscribe(); BackCommand = backCmd; var latestAfterPop = stackChanged .Where(args => args.Action == NotifyCollectionChangedAction.Remove) .Select(a => new { Popped = (Tuple<Screen, IScreenViewModel>)a.OldItems[0], Latest = _navigationStack.Peek() }); _poppedSub = latestAfterPop .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(t => { // Navigate away from the prev one t.Popped.Item2.OnNavigatedAway(); // Nav to the prev one t.Latest.Item2.OnNavigatedTo(NavigateDirection.Back); CurrentViewModel = t.Latest.Item2; Screen = t.Latest.Item1; // Cleanup t.Popped.Item2.Dispose(); }); var added = stackChanged .Where(args => args.Action == NotifyCollectionChangedAction.Add) .Select(a => { var t = (Tuple<Screen, IScreenViewModel>)a.NewItems[0]; return Tuple.Create(t.Item1, t.Item2, NavigateDirection.Forward); }); var removed = latestAfterPop.Select(t => Tuple.Create(t.Latest.Item1, t.Latest.Item2, NavigateDirection.Back)); var connectable = added.Merge(removed).Publish(); _currentScreenSub = connectable.Connect(); // make it hot CurrentScreen = connectable; }
public static void InitializeDocumentType(IUIVisualizerService uiVisualizerService, IViewModelLocator viewModelLocator) { #pragma warning restore IDE0060 // Remove unused parameter }
/// <summary> /// Initializes static members of the <see cref="UIViewController"/> class. /// </summary> static UIViewController() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve <IViewModelLocator>(); }
public NavigationService(ISettings settings, IViewModelLocator locator) { _settings = settings; _locator = locator; _viewModelLocator.Add(Screen.Login, () => locator.LoginViewModel); _viewModelLocator.Add(Screen.AgentMeeting, () => locator.AgentMeetingViewModel); _viewModelLocator.Add(Screen.MeetingList, () => locator.MeetingListViewModel); _viewModelLocator.Add(Screen.ClientMeeting, () => locator.ClientMeetingViewModel); _viewModelLocator.Add(Screen.Lobby, () => locator.LobbyViewModel); // Setup the backstack var stackChanged = Observable.FromEventPattern <NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>( h => _navigationStack.CollectionChanged += h, h => _navigationStack.CollectionChanged -= h).Select(p => p.EventArgs); var count = stackChanged.Select(_ => _navigationStack.Count); var backCmd = new ReactiveCommand(count.Select(v => v > 1)); _backCmdSub = backCmd.RegisterAsyncAction(_ => _navigationStack.Pop(), Scheduler.Immediate).Subscribe(); BackCommand = backCmd; var latestAfterPop = stackChanged .Where(args => args.Action == NotifyCollectionChangedAction.Remove) .Select(a => new { Popped = (Tuple <Screen, IScreenViewModel>)a.OldItems[0], Latest = _navigationStack.Peek() }); _poppedSub = latestAfterPop .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(t => { // Navigate away from the prev one t.Popped.Item2.OnNavigatedAway(); // Nav to the prev one t.Latest.Item2.OnNavigatedTo(NavigateDirection.Back); CurrentViewModel = t.Latest.Item2; Screen = t.Latest.Item1; // Cleanup t.Popped.Item2.Dispose(); }); var added = stackChanged .Where(args => args.Action == NotifyCollectionChangedAction.Add) .Select(a => { var t = (Tuple <Screen, IScreenViewModel>)a.NewItems[0]; return(Tuple.Create(t.Item1, t.Item2, NavigateDirection.Forward)); }); var removed = latestAfterPop.Select(t => Tuple.Create(t.Latest.Item1, t.Latest.Item2, NavigateDirection.Back)); var connectable = added.Merge(removed).Publish(); _currentScreenSub = connectable.Connect(); // make it hot CurrentScreen = connectable; }
/// <summary> /// Initializes static members of the <see cref="PhoneApplicationPage"/> class. /// </summary> static PhoneApplicationPage() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve<IViewModelLocator>(); }
public AgentMeetingViewModel( IAgentConnection agentConnection, ISharedDataService sharedDataService, INavigationService navigation, IViewModelLocator locator, IPlatformServices platformServices) { _sharedDataService = sharedDataService; _agentConnection = agentConnection; NavigationPane = locator.NavigationPaneViewModel; var startcmd = new ReactiveCommand(this.WhenAnyValue(vm => vm.MeetingStarted, vm => vm.Meeting.VideoConf.VideoInitCompleted, vm => vm.Meeting, (started, video, mtg) => !started && mtg != null)); _startMeetingSub = startcmd.RegisterAsyncTask(async _ => { MeetingStarted = true; Meeting.VideoConf.Config = await _agentConnection.StartMeeting(Meeting.Id); }).Subscribe(); var endcmd = new ReactiveCommand(this.WhenAnyValue(vm => vm.MeetingStarted, vm => vm.Meeting.VideoConf.VideoInitCompleted, (meetingStarted, videoStarted) => meetingStarted && videoStarted)); _endMeetingSub = endcmd.RegisterAsyncAction(_ => navigation.BackCommand.Execute(null)).Subscribe(); StartMeetingCommand = startcmd; EndMeetingCommand = endcmd; _agentConnection.ClientInMeeting.ToProperty(this, t => t.IsClientInMeeting, out _isClientInMeeting); var savePdfCmd = new ReactiveCommand(this.WhenAnyValue(vm => vm.MeetingStarted, vm => vm.Meeting.VideoConf.VideoInitCompleted, (meetingStarted, videoStarted) => meetingStarted && videoStarted)); _pdfSub = savePdfCmd.RegisterAsyncTask(async _ => { await _agentConnection.GenerateIllustration(Meeting.Id, _sharedDataService.Person); }).Subscribe(); _pdfAvailableSub = _agentConnection.PdfAvailable.ObserveOn(RxApp.MainThreadScheduler).Subscribe(async p => { var result = await _agentConnection.GetIllustrationPdfAsync(p); await platformServices.SaveAndLaunchFile(new System.IO.MemoryStream(result), "pdf"); }); SavePdfCommand = savePdfCmd; _titleSub = this.WhenAnyValue( vm => vm.Meeting.Client, (client) => string.Format("Meeting with {0}", client.FullName) ) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(t => Title = t); MeetingStatus = GetMeetingStatusString(IsClientInMeeting, MeetingStarted); _meetingStatusSub = this.WhenAnyValue( vm => vm.MeetingStarted, vm => vm.IsClientInMeeting, (started, clientIn) => GetMeetingStatusString(clientIn, started)) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(t => MeetingStatus = t); //_titleSub = this.WhenAnyValue( // vm => vm.Meeting.Client, // vm => vm.MeetingStarted, // vm => vm.IsClientInMeeting, // (client, started, clientIn) => // string.Format("Meeting with {0}. Started: {1} Client Joined: {2}", // client.FullName, started, clientIn) // ) // .ObserveOn(RxApp.MainThreadScheduler) // .Subscribe(t => Title = t); // When the meeting's active tool changes, set the Tool and page number // into the shared state so it'll be propagated. // Get an observable for the currently set tool var activeToolObs = this.WhenAnyValue(vm => vm.Meeting.ActiveTool) .Where(t => t != null); // Every time the tool changes, watch the new tool's CurrentPageNumber // for changes. // // When we get a change, convert that into a ToolIdAndPageNumber, bringing in // the owning tool id. var pageChangedObs = activeToolObs .Select(t => t.WhenAnyValue(v => v.CurrentPageNumber, p => new ToolIdAndPageNumber { ToolId = t.ToolId, PageNumber = p}) ) .Switch() // Only listen to the most recent sequence of property changes (active tool) .Log(this, "Current Page Changed", t => string.Format("Tool: {0}, Page: {1}", t.ToolId, t.PageNumber)); // Every time the tool changes, select the tool id and current page number var toolChangedObs = activeToolObs .Select(t => new ToolIdAndPageNumber { ToolId = t.ToolId, PageNumber = t.CurrentPageNumber }) .Log(this, "Tool Changed", t => string.Format("Tool: {0}, Page: {1}", t.ToolId, t.PageNumber)); // Merge them together - tool changes and current page of the tool _meetingStateSub = toolChangedObs .Merge(pageChangedObs) .Subscribe(t => sharedDataService.MeetingState.State = t); }
/// <summary> /// Initializes a new instance of the <see cref="DataWindow"/> class. /// <para /> /// Registers the <see cref="IViewModelLocator"/> in the <see cref="IServiceLocator"/> if it is not yet registered. /// </summary> static DataWindow() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve<IViewModelLocator>(); }
/// <summary> /// Initializes static members of the <see cref="LogicBase"/> class. /// </summary> static LogicBase() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve<IViewModelLocator>(); _viewManager = dependencyResolver.Resolve<IViewManager>(); _viewPropertySelector = dependencyResolver.Resolve<IViewPropertySelector>(); ViewLoadManager = dependencyResolver.Resolve<IViewLoadManager>(); }
public RegionItem(IViewModelLocator viewModelLocator, IViewLocator viewLocator, IStateSerializer stateSerializer, IModule module, object parameter) : this(viewModelLocator, viewLocator, stateSerializer, module.Key, module.ViewModelFactory, module.ViewModelName, module.ViewName, module.ViewType, parameter) { }
/// <summary> /// Initializes static members of the <see cref="PhoneApplicationPage"/> class. /// </summary> static PhoneApplicationPage() { var dependencyResolver = IoCConfiguration.DefaultDependencyResolver; _viewModelLocator = dependencyResolver.Resolve <IViewModelLocator>(); }