internal static int CompareMembers(XamlMember m1, XamlMember m2) { // ConstructorArguments and PositionalParameters go first. if (m1 == XamlLanguage.PositionalParameters) { return(-1); } if (m2 == XamlLanguage.PositionalParameters) { return(1); } if (m1.IsConstructorArgument()) { if (!m2.IsConstructorArgument()) { return(-1); } } else if (m2.IsConstructorArgument()) { return(1); } // ContentProperty is returned at last. if (m1.DeclaringType != null && m1.DeclaringType.ContentProperty == m1) { return(1); } if (m2.DeclaringType != null && m2.DeclaringType.ContentProperty == m2) { return(-1); } // then, compare names. return(String.CompareOrdinal(m1.Name, m2.Name)); }