public object Locate(Func <object> locate, object baseObject = null) { var obj = locate(); switch (obj) { case IView v: var h = Mvvm.ViewHelperFactory.Get(v, hh => hh.Context = this); h.Linked = baseObject; CallCreators(v); break; case IViewModel vm: IMvvmContext context = this; if (vm is IMvvmContextProvider p) { context = GetChildContext(vm.GetType().Name); p.ConfigureMvvmContext(context); } vm.MvvmContext = context; vm.Model = baseObject; CallCreators(vm); break; } if (baseObject is IViewModel vmb) { vmb.SetLinked(obj); } return(obj); }
public void ConfigureMvvmContext(IMvvmContext ctx) { }
public static IView GetView <T>(this IMvvmContext ctx, object baseObject, Type viewClass) => ctx.GetView(baseObject, typeof(T), viewClass);
public static IView GetView(this IMvvmContext ctx, object baseObject, Type viewMode) => ctx.GetView(baseObject, viewMode, typeof(IViewClassDefault));
public static object GetLinked <TMode, TClass>(this IMvvmContext ctx, object o) => ctx.GetLinked(o, typeof(TMode), typeof(TClass));
public static object GetLinked <T>(this IMvvmContext ctx, object o) => ctx.GetLinked(o, typeof(T), typeof(IViewClassDefault));
public static object GetLinked <T>(this IMvvmContext ctx, object o, Type viewClass) => ctx.GetLinked(o, typeof(T), viewClass);
public static IView GetView <TMode, TClass>(this IMvvmContext ctx, object baseObject) => ctx.GetView(baseObject, typeof(TMode), typeof(TClass));
public static IView GetView <T>(this IMvvmContext ctx, object baseObject) => ctx.GetView(baseObject, typeof(T), typeof(IViewClassDefault));
public MvvmContext(IMvvmContext parent, string name) { Parent = parent; Name = name; _cache = new Lazy <ViewModelCache>(() => new ViewModelCache(this, Mvvm)); }
public static void SetMvvmContext(DependencyObject obj, IMvvmContext value) => obj.SetValue(MvvmContextProperty, value);
public void ConfigureMvvmContext(IMvvmContext ctx) { // ctx.AddCreator<SampleTestResultViewModel>(vm => vm.Parent = this); }
public IMvvmContext GetNewContext(IMvvmContext parent, string name) => new MvvmContext(parent, name, this);
public IMvvmContext GetNewContext(IMvvmContext parent, string name) => _getNewContext(parent, name);
public ViewModelCache(IMvvmContext context, IMvvmService mvvm) { _context = context; _mvvm = mvvm; }