private static DirectiveKind GetDirectiveKind(XamlMemberBase xamlMember)
        {
            if (xamlMember.Equals(CoreTypes.Initialization))
            {
                return DirectiveKind.Initialization;
            }
            if (xamlMember.Equals(CoreTypes.Items))
            {
                return DirectiveKind.Items;
            }
            if (xamlMember.Equals(CoreTypes.Key))
            {
                return DirectiveKind.Key;
            }
            if (xamlMember.Equals(CoreTypes.MarkupExtensionArguments))
            {
                return DirectiveKind.MarkupExtensionArguments;
            }
            if (xamlMember.Equals(CoreTypes.Name))
            {
                return DirectiveKind.Name;
            }
            if (xamlMember.Equals(CoreTypes.UnknownContent))
            {
                return DirectiveKind.UnknownContent;
            }

            throw new InvalidOperationException($"Unexpected XAML directive. The directive {xamlMember} has been found and we don't know how to handle it.");
        }
        private static DirectiveKind GetDirectiveKind(XamlMemberBase xamlMember)
        {
            if (xamlMember.Equals(CoreTypes.Initialization))
            {
                return(DirectiveKind.Initialization);
            }
            if (xamlMember.Equals(CoreTypes.Items))
            {
                return(DirectiveKind.Items);
            }
            if (xamlMember.Equals(CoreTypes.Key))
            {
                return(DirectiveKind.Key);
            }
            if (xamlMember.Equals(CoreTypes.MarkupExtensionArguments))
            {
                return(DirectiveKind.MarkupExtensionArguments);
            }
            if (xamlMember.Equals(CoreTypes.Name))
            {
                return(DirectiveKind.Name);
            }
            if (xamlMember.Equals(CoreTypes.UnknownContent))
            {
                return(DirectiveKind.UnknownContent);
            }


            throw new InvalidOperationException($"Unexpected XAML directive. The directive {xamlMember} has been found and we don't know how to handle it.");
        }
Beispiel #3
0
        private XamlMemberBase GetMember(XamlMemberBase member)
        {
            if (IsLevelOneAndThereIsRootInstance && !member.IsDirective)
            {
                return(rootInstanceXamlType == null ? member : rootInstanceXamlType.GetMember(member.Name));
            }

            return(member);
        }
        private static string TranslateDirectiveName(XamlMemberBase member)
        {
            if (member.Name == "_MarkupExtensionParameters")
            {
                return "_PositionalParameters";
            }

            return member.Name;
        }
        private static string TranslateDirectiveName(XamlMemberBase member)
        {
            if (member.Name == "_MarkupExtensionParameters")
            {
                return("_PositionalParameters");
            }

            return(member.Name);
        }
        public static XamlMember ToWpf(this XamlMemberBase member, XamlSchemaContext context)
        {
            if (member.IsDirective)
            {
                return(GetDirective(member, context));
            }

            return(GetMember((MutableXamlMember)member, context));
        }
 public ProtoXamlInstruction Attribute(XamlMemberBase member, string value, string prefix)
 {
     return(new ProtoXamlInstruction
     {
         PropertyAttribute = member,
         NodeType = NodeType.Attribute,
         PropertyAttributeText = value,
         Prefix = prefix,
     });
 }
        private static XamlMember GetDirective(XamlMemberBase directive, XamlSchemaContext context)
        {
            var directiveName = TranslateDirectiveName(directive);

            var xamlMember = from ns in context.GetAllXamlNamespaces()
                let dir = context.GetXamlDirective(ns, directiveName)
                where dir != null
                select dir;

            return new DirectiveAdapter(xamlMember.First());
        }
        private static XamlMember GetDirective(XamlMemberBase directive, XamlSchemaContext context)
        {
            var directiveName = TranslateDirectiveName(directive);

            var xamlMember = from ns in context.GetAllXamlNamespaces()
                             let dir = context.GetXamlDirective(ns, directiveName)
                                       where dir != null
                                       select dir;

            return(new DirectiveAdapter(xamlMember.First()));
        }
        private IEnumerable<XamlInstruction> ParseCollectionInsideThisProperty(XamlMemberBase member)
        {
            yield return Inject.StartOfMember(member);
            yield return Inject.GetObject();
            yield return Inject.Items();

            foreach (var instruction in ParseElements())
            {
                yield return instruction;
            }

            yield return Inject.EndOfMember();
            yield return Inject.EndOfObject();
            yield return Inject.EndOfMember();
        }
        public void WriteStartMember(XamlMemberBase property)
        {
            bag.Current.Property = property;

            if (bag.Current.Instance == null)
            {
                if (property.IsDirective && !IsConstructionDirective((XamlDirective) property))
                {
                    objectAssembler.PrepareNewInstanceBecauseWeWantToConfigureIt(bag);
                }
                if (Equals(property, CoreTypes.MarkupExtensionArguments))
                {
                    SetupCurrentCollectionToHoldPositionalArguments();
                }
            }
        }
Beispiel #12
0
        private IEnumerable <XamlInstruction> ParseCollectionInsideThisProperty(XamlMemberBase member)
        {
            yield return(Inject.StartOfMember(member));

            yield return(Inject.GetObject());

            yield return(Inject.Items());

            foreach (var instruction in ParseElements())
            {
                yield return(instruction);
            }

            yield return(Inject.EndOfMember());

            yield return(Inject.EndOfObject());

            yield return(Inject.EndOfMember());
        }
Beispiel #13
0
 public static XamlInstruction StartOfMember(XamlMemberBase member)
 {
     return new XamlInstruction(XamlInstructionType.StartMember, member);
 }
Beispiel #14
0
 public static XamlNode StartOfMember(XamlMemberBase member)
 {
     return new XamlNode(XamlNodeType.StartMember, member);
 }
Beispiel #15
0
        private XamlMemberBase GetMember(XamlMemberBase member)
        {
            if (IsLevelOneAndThereIsRootInstance && !member.IsDirective)
            {
                return rootInstanceXamlType == null ? member : rootInstanceXamlType.GetMember(member.Name);
            }

            return member;
        }
Beispiel #16
0
 protected bool Equals(XamlMemberBase other)
 {
     return(string.Equals(Name, other.Name) && XamlType.Equals(other.XamlType));
 }
 public StartMemberCommand(ObjectAssembler assembler, XamlMemberBase member) : base(assembler)
 {
     this.member = member;
 }
        private XamlMemberBase GetMember(XamlMemberBase member)
        {
            if (IsLevelOneAndThereIsRootInstance)
            {
                var xamlMember = WiringContext.GetType(rootInstanceType).GetMember(member.Name);
                return rootInstanceType == null ? member : xamlMember;
            }

            return member;
        }
 public StartMemberCommand(SuperObjectAssembler assembler, XamlMemberBase member)
     : base(assembler)
 {
     this.member = member;
 }
Beispiel #20
0
 protected bool Equals(XamlMemberBase other)
 {
     return string.Equals(Name, other.Name) && XamlType.Equals(other.XamlType);
 }
Beispiel #21
0
        private void SetCommuterStateAccordingToDirective(XamlMemberBase xamlMemberBase)
        {
            switch (GetDirectiveKind(xamlMemberBase))
            {
                case DirectiveKind.Items:
                    if (!StateCommuter.ParentIsOneToMany)
                    {
                        throw new XamlParseException("Cannot assign a more than one item to a member that is not a collection.");
                    }
                    break;

                case DirectiveKind.Initialization:
                    StateCommuter.ValueProcessingMode = ValueProcessingMode.InitializationValue;
                    break;

                case DirectiveKind.Key:
                    StateCommuter.ValueProcessingMode = ValueProcessingMode.Key;
                    break;

                case DirectiveKind.MarkupExtensionArguments:
                    StateCommuter.Current.CtorArguments = new Collection<ConstructionArgument>();
                    StateCommuter.ValueProcessingMode = ValueProcessingMode.ConstructionParameter;
                    break;

                case DirectiveKind.Name:
                    StateCommuter.ValueProcessingMode = ValueProcessingMode.Name;
                    break;
                case DirectiveKind.UnknownContent:
                    AccommodateLevelsForIncomingChildren();
                    break;
            }
        }
Beispiel #22
0
 private static bool IsAssignmentBeingMadeToContainer(XamlMemberBase parentProperty, XamlType type)
 {
     return parentProperty.IsDirective && type.IsContainer;
 }
Beispiel #23
0
 private static bool IsMemberEquivalentToNameDirective(XamlMemberBase memberToCheck)
 {
     return memberToCheck.Name == "Name";
 }
Beispiel #24
0
 public static XamlInstruction StartOfMember(XamlMemberBase member)
 {
     return new XamlInstruction(XamlInstructionType.StartMember, member);
 }