示例#1
0
        private bool TryGetBamlProperty(Int16 propertyId, out BamlProperty bamlProperty, out XamlMember xamlMember)
        {
            lock (_syncObject)
            {
                if (propertyId >= 0 && propertyId < _bamlProperty.Count)
                {
                    Object property = _bamlProperty[propertyId];
                    xamlMember   = property as XamlMember;
                    bamlProperty = property as BamlProperty;
                    return(true);
                }
            }

            if (propertyId < 0)
            {
                if (_parentSchemaContext == System.Windows.Markup.XamlReader.BamlSharedSchemaContext)
                {
                    xamlMember = System.Windows.Markup.XamlReader.BamlSharedSchemaContext.GetKnownBamlMember(propertyId);
                }
                else
                {
                    Int16  typeId;
                    string propertyName;
                    KnownTypes.GetKnownProperty(propertyId, out typeId, out propertyName);
                    xamlMember = GetXamlType(typeId).GetMember(propertyName);
                }
                bamlProperty = null;
                return(true);
            }

            xamlMember   = null;
            bamlProperty = null;
            return(false);
        }