// 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); } }
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); }
public XamlObjectWriterFactory(ObjectWriterContext context) { _savedContext = context.GetSavedContext(SavedContextType.Template); _parentSettings = context.ServiceProvider_GetSettings(); }