private object LocateView(Screen model) { var viewModelName = model.GetType().Name; var viewName = viewModelName.Substring(0, viewModelName.LastIndexOf("Model", StringComparison.Ordinal)); var type = GetType().Assembly.GetTypes().First(n => n.Name == viewName); return Activator.CreateInstance(type); }
private Window CreateWindow(Screen rootModel, bool isDialog) { var view = LocateView(rootModel); BindModel(rootModel, view); var window = EnsureWindow(view, isDialog); var binding = new Binding("DisplayName") { Mode = BindingMode.TwoWay }; window.SetBinding(Window.TitleProperty, binding); return window; }
public void ShowWindow(Screen screen) { CreateWindow(screen, false).Show(); }
private static void BindModel(Screen model, object view) { var viewAsControl = (Control) view; viewAsControl.DataContext = model; model.AttachView(view); }
public bool? ShowDialog(Screen screen) { return CreateWindow(screen, true).ShowDialog(); }