示例#1
0
        public ShapeAlterationBuilder BoundAs(string bindingSource, Func <ShapeDescriptor, Func <DisplayContext, Task <IHtmlContent> > > binder)
        {
            // schedule the configuration
            return(Configure(descriptor =>
            {
                Func <DisplayContext, Task <IHtmlContent> > target = null;

                var binding = new ShapeBinding
                {
                    ShapeDescriptor = descriptor,
                    BindingName = _bindingName,
                    BindingSource = bindingSource,
                };

                binding.BindingAsync = displayContext =>
                {
                    // when used, first realize the actual target once
                    if (target == null)
                    {
                        target = binder(binding.ShapeDescriptor);
                    }

                    // and execute the re
                    return target(displayContext);
                };

                // ShapeDescriptor.Bindings is a case insensitive dictionary
                descriptor.Bindings[_bindingName] = binding;
                descriptor.BindingSources.Add(bindingSource);
            }));
        }
        public ShapeAlterationBuilder BoundAs(string bindingSource, Func <DisplayContext, Task <IHtmlContent> > bindingDelegate)
        {
            // schedule the configuration
            return(Configure(descriptor =>
            {
                var binding = new ShapeBinding
                {
                    BindingName = _bindingName,
                    BindingSource = bindingSource,
                };

                binding.BindingAsync = bindingDelegate;

                // ShapeDescriptor.Bindings is a case insensitive dictionary
                descriptor.Bindings[_bindingName] = binding;
                descriptor.BindingSources.Add(bindingSource);
            }));
        }