示例#1
0
        internal static ReferenceStep FilterProperty(SceneNode node, ReferenceStep referenceStep)
        {
            if (node is RichTextBoxRangeElement)
            {
                return(referenceStep);
            }
            RichTextBoxElement richTextBoxElement = node as RichTextBoxElement;

            if (richTextBoxElement != null)
            {
                foreach (IPropertyId propertyId in !node.ProjectContext.IsCapabilitySet(PlatformCapability.IsWpf) ? RichTextBoxParagraphsRangeElement.SilverlightTextParagraphProperties : RichTextBoxParagraphsRangeElement.WpfTextParagraphProperties)
                {
                    if (referenceStep.Equals((object)richTextBoxElement.ProjectContext.ResolveProperty(propertyId)))
                    {
                        return(referenceStep);
                    }
                }
            }
            StyleNode styleNode   = node as StyleNode;
            IType     typeId      = styleNode == null || styleNode.Platform.Metadata.IsNullType((ITypeId)styleNode.StyleTargetTypeId) ? node.Type : styleNode.StyleTargetTypeId;
            Type      runtimeType = typeId.NearestResolvedType.RuntimeType;

            if (referenceStep.TargetType.IsAssignableFrom(runtimeType) && (PlatformTypeHelper.GetDeclaringType((IMember)referenceStep) == runtimeType || referenceStep.MemberType == MemberType.DesignTimeProperty))
            {
                return(referenceStep);
            }
            ReferenceStep referenceStep1;

            if (typeId == SceneNodeObjectSet.FilteredPropertiesType)
            {
                if (SceneNodeObjectSet.FilteredProperties.TryGetValue(referenceStep, out referenceStep1))
                {
                    return(referenceStep1);
                }
            }
            else
            {
                SceneNodeObjectSet.FilteredPropertiesType = (ITypeId)typeId;
                SceneNodeObjectSet.FilteredProperties.Clear();
            }
            referenceStep1 = SceneNodeObjectSet.FilterPropertyInternal((ITypeResolver)node.ProjectContext, typeId, referenceStep);
            SceneNodeObjectSet.FilteredProperties.Add(referenceStep, referenceStep1);
            return(referenceStep1);
        }
示例#2
0
 internal static ReferenceStep FilterProperty(ITypeResolver typeResolver, IType type, ReferenceStep referenceStep)
 {
     return(SceneNodeObjectSet.FilterPropertyInternal(typeResolver, type, referenceStep));
 }