/// <summary> /// Creates a Form. /// </summary> /// <param name="rootModel">The root view model.</param> /// <param name="isDialog">if set to <c>true</c> the Form is a dialog.</param> /// <param name="context">The view context.</param> /// <param name="settings">The optional popup settings.</param> /// <param name="rootForm">The root form.</param> /// <returns>The created Form.</returns> /// <remarks> /// The calling method only passes the root form parameter in ShowMainWindow, when the main form already exists. /// This is necessary for Visual WebGUI (or Windows if the Bootstrapper is invoked after the main form creation). /// </remarks> protected virtual Page CreatePage(object rootModel, bool isDialog, object context, IDictionary <string, object> settings, Page rootForm = null) { Page view; if (rootForm != null) { view = rootForm; } else { view = EnsurePage(rootModel, ViewLocator.LocateForModel(rootModel, null, null), isDialog); } ViewModelBinder.Bind(rootModel, view, null); var haveDisplayName = rootModel as IHaveDisplayName; if (haveDisplayName != null && !ConventionManager.HasBinding(view, "Text")) { view.DataBindings.Add(new Binding("Text", rootModel, "DisplayName", true, DataSourceUpdateMode.OnPropertyChanged)); } ApplySettings(view, settings); new WindowConductor(rootModel, view); return(view); }
/// <summary> /// Locates the view model, locates the associate view, binds them and shows it as the root view. /// </summary> /// <param name="viewModelType">The view model type.</param> protected void DisplayRootViewFor(Type viewModelType) { var viewModel = IoC.GetInstance(viewModelType, null); var view = ViewLocator.LocateForModel(viewModel, null, null); ViewModelBinder.Bind(viewModel, view, null); var activator = viewModel as IActivate; if (activator != null) { activator.Activate(); } Mouse.Initialize(view); Application.RootVisual = view; }
private static void OnContextChanged(DependencyObject targetLocation, DependencyPropertyChangedEventArgs e) { if (e.OldValue == e.NewValue) { return; } var model = GetModel(targetLocation); if (model == null) { return; } var view = ViewLocator.LocateForModel(model, targetLocation, e.NewValue); SetContentProperty(targetLocation, view); ViewModelBinder.Bind(model, view, e.NewValue); }
private static void OnModelChanged(DependencyObject targetLocation, DependencyPropertyChangedEventArgs args) { if (args.OldValue == args.NewValue) { return; } if (args.NewValue != null) { var context = GetContext(targetLocation); var view = ViewLocator.LocateForModel(args.NewValue, targetLocation, context); SetContentProperty(targetLocation, view); ViewModelBinder.Bind(args.NewValue, view, context); } else { SetContentProperty(targetLocation, args.NewValue); } }