コード例 #1
0
        public IBindingContextItem ContextItemFactory(IBindingContextElement owner)
        {
            string name;
            IBindingContextItem nestedContextItem = NestedBindingDefinition?.ContextItemFactory(owner);

            if (nameBindingDefinition != null)
            {
                object obj = nameBindingDefinition.ResolveBinding(owner.DataSource);
                name = rootName.EmptyIfNull() + (obj?.ToString() ?? string.Empty);
            }
            else
            {
                if (usePos)
                {
                    name = definition.Name.Replace(POS_KEYWORD, "_" + owner == null ? string.Empty : owner.Index.ToString());
                }
                else if (useAllPos)
                {
                    StringBuilder          nameBuilder  = new StringBuilder();
                    IBindingContextElement currentOwner = owner;
                    while (currentOwner != null)
                    {
                        nameBuilder.Insert(0, "_" + currentOwner.Index);
                        currentOwner = currentOwner.ParentPart.ParentContext.Parent;
                    }
                    nameBuilder.Insert(0, definition.Name.Replace(ALL_POS_KEYWORD, string.Empty));
                    name = nameBuilder.ToString();
                }
                else
                {
                    name = definition.Name;
                }
            }
            return(new ExcelContextItemNamedRange(owner, name, this, nestedContextItem));
        }
コード例 #2
0
 public override object ResolveBinding(object dataSource)
 {
     dataSource = realBindingDefinition.ResolveBinding(dataSource);
     return(childBindingDefinition.ResolveBinding(dataSource));
 }
コード例 #3
0
 public override object UpdateDataSource(object dataSource, object data)
 {
     dataSource = realBindingDefinition.ResolveBinding(dataSource);
     return(childBindingDefinition.UpdateDataSource(dataSource, data));
 }