private UIElement Locate(object viewModel, DependencyObject visualParent, object context) { var lCtx = new LocationContext(viewModel, visualParent, context); var view = _locators.Select(l => l.LocateView(lCtx)).MaybeFirst(); return view.MustHaveValue(ConstructFailureElement(viewModel)); }
private UIElement Locate(object viewModel, DependencyObject visualParent, object context) { var lCtx = new LocationContext(viewModel, visualParent, context); var view = _locators.Select(l => l.LocateView(lCtx)).MaybeFirst(); return(view.MustHaveValue(ConstructFailureElement(viewModel))); }
public Maybe<UIElement> LocateView(LocationContext ctx) { var ui = _original(ctx.Model, ctx.VisualParent, ctx.CaliburnContext.Value); if (ui is TextBlock && ((TextBlock)ui).Text.StartsWith("Cannot find view for")) return Maybe<UIElement>.None; return ui.ToMaybe(); }
Maybe <UIElement> IViewLocator.LocateView(LocationContext lCtx) { if (!_configuration.Matches(lCtx)) { return(Maybe <UIElement> .None); } return(_configuration.Build(_container, lCtx).ToMaybe()); }
private UIElement FromDataTemplate(IContainer builder, LocationContext ctx) { var svc = builder.GetInstance<DataTemplateService>(); return svc.GetForObject(ctx.Model) .Get(dt => dt.LoadContent()) .Cast<FrameworkElement>() .Do(fw => fw.DataContext = ctx.Model) .MustHaveValue(new TextBlock { Text = "Failed to find DataTemplate for " + ctx.Model.GetType().Name }); }
public Maybe <UIElement> LocateView(LocationContext ctx) { var ui = _original(ctx.Model, ctx.VisualParent, ctx.CaliburnContext.Value); if (ui is TextBlock && ((TextBlock)ui).Text.StartsWith("Cannot find view for")) { return(Maybe <UIElement> .None); } return(ui.ToMaybe()); }
private UIElement CreateByBuilder(IContainer builder, LocationContext ctx) { var element = _builder(builder.GetInstance<XamlBuilder>(), ctx); return element.Create(); }
public bool Matches(LocationContext locationContext) { return _match(locationContext); }
public UIElement Build(IContainer builder, LocationContext ctx) { if (_builder != null) return CreateByBuilder(builder, ctx); return FromDataTemplate(builder, ctx); }
Maybe<UIElement> IViewLocator.LocateView(LocationContext lCtx) { if (!_configuration.Matches(lCtx)) return Maybe<UIElement>.None; return _configuration.Build(_container, lCtx).ToMaybe(); }