예제 #1
0
        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));
        }
예제 #2
0
        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)));
        }
예제 #3
0
        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();
        }
예제 #4
0
 Maybe <UIElement> IViewLocator.LocateView(LocationContext lCtx)
 {
     if (!_configuration.Matches(lCtx))
     {
         return(Maybe <UIElement> .None);
     }
     return(_configuration.Build(_container, lCtx).ToMaybe());
 }
예제 #5
0
 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 });
 }
예제 #6
0
        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());
        }
예제 #7
0
 private UIElement CreateByBuilder(IContainer builder, LocationContext ctx)
 {
     var element = _builder(builder.GetInstance<XamlBuilder>(), ctx);
     return element.Create();
 }
예제 #8
0
 public bool Matches(LocationContext locationContext)
 {
     return _match(locationContext);
 }
예제 #9
0
 public UIElement Build(IContainer builder, LocationContext ctx)
 {
     if (_builder != null)
         return CreateByBuilder(builder, ctx);
     return FromDataTemplate(builder, ctx);
 }
예제 #10
0
 Maybe<UIElement> IViewLocator.LocateView(LocationContext lCtx)
 {
     if (!_configuration.Matches(lCtx))
       return Maybe<UIElement>.None;
     return _configuration.Build(_container, lCtx).ToMaybe();
 }