Exemple #1
0
        // Used to implement IProvideValueTarget Service provider.
        public static object GetTargetProperty(ObjectWriterContext xamlContext)
        {
            // If the XamlMember implements IProvideValueTarget, ask it for the TargetProperty first
            Debug.Assert(xamlContext.ParentProperty != null);

            System.Windows.Markup.IProvideValueTarget ipvt = xamlContext.ParentProperty as System.Windows.Markup.IProvideValueTarget;
            if (ipvt != null)
            {
                return(ipvt.TargetProperty);
            }

            XamlMember parentProperty = xamlContext.ParentProperty;

            //
            // We should never have a null ParentProperty here but
            // protect against null refs since we are going to dereference it
            if (parentProperty == null)
            {
                return(null);
            }

            if (parentProperty.IsAttachable)
            {
                //
                // IPVT returns the static Set method for attached properties in 3.0
                return(parentProperty.Setter);
            }
            else
            {
                //
                // This branch cover regular property (will return non null)
                // and items in a collection/diction (will return null - IPVT returns null in 3.0 for collections/dictionaries).
                return(parentProperty.UnderlyingMember);
            }
        }
Exemple #2
0
        public static object GetTargetProperty(ObjectWriterContext xamlContext)
        {
            IProvideValueTarget parentProperty = xamlContext.ParentProperty as IProvideValueTarget;

            if (parentProperty != null)
            {
                return(parentProperty.TargetProperty);
            }
            XamlMember member = xamlContext.ParentProperty;

            if (member == null)
            {
                return(null);
            }
            if (member.IsAttachable)
            {
                return(member.Setter);
            }
            return(member.UnderlyingMember);
        }
Exemple #3
0
 public XamlObjectWriterFactory(ObjectWriterContext context)
 {
     _savedContext   = context.GetSavedContext(SavedContextType.Template);
     _parentSettings = context.ServiceProvider_GetSettings();
 }