private IEnumerable <ViewPropertyStruct> GetViewPropertiesCore(ViewPropertyMode viewPropertyMode) { var fields = this.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); foreach (FieldInfo field in fields) { //Filter out any public static field that is not a DependencyProperty ( no examples ) if (field.FieldType != typeof(DependencyProperty)) { continue; } //Filter out all DependencyProperty that doesn't match the ViewPropertyMode. var attribute = ViewBase.GetViewPropertyAttribute(field); if ((attribute == null) || (attribute.ViewPropertyMode != viewPropertyMode)) { continue; } var dependencyProperty = ( DependencyProperty )field.GetValue(null); // parameter is ignored for static fields. Debug.Assert(dependencyProperty != null); if (dependencyProperty.ReadOnly) { throw new InvalidOperationException("An attempt was made to return a read-only property. Dependency properties returned by ViewBase.GetViewPropertiesCore() cannot be read-only."); } yield return(new ViewPropertyStruct(dependencyProperty, attribute.ViewPropertyMode, attribute.FlattenDetailBindingMode)); } }
private void GetViewPropertiesCore(List <DependencyProperty> viewProperties, ViewPropertyMode viewPropertyMode) { FieldInfo[] fields = this.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy); foreach (FieldInfo field in fields) { //filter out any public static field that is not a DependencyProperty ( no examples ) if (field.FieldType == typeof(DependencyProperty)) { object[] viewPropertyAttributes = field.GetCustomAttributes(typeof(ViewPropertyAttribute), true); //If there is no attribute set on the DP field. if (viewPropertyAttributes.GetLength(0) == 0) { //Do nothing, the DP shall not be used as a ViewProperty } else if (viewPropertyAttributes.GetLength(0) == 1) { //The attribute has been set on the DP field. ViewPropertyAttribute attrib = ( ViewPropertyAttribute )viewPropertyAttributes[0]; if (viewPropertyMode == attrib.ViewPropertyMode) { viewProperties.Add(( DependencyProperty )field.GetValue(null)); // parameter is ignored for static fields. } } else { //More than one ViewProperty attribute has been set on the same field. throw new InvalidOperationException("An attempt was made to the ViewProperty Attribute more than once on a single DependencyProperty field."); } } // end if: FieldType is DependencyProperty } //end foreach: fields }
internal ViewPropertyStruct( DependencyProperty dependencyProperty, ViewPropertyMode viewPropertyMode, FlattenDetailBindingMode flattenDetailBindingMode) { if (dependencyProperty == null) { throw new ArgumentNullException("dependencyProperty"); } this.DependencyProperty = dependencyProperty; this.ViewPropertyMode = viewPropertyMode; this.FlattenDetailBindingMode = flattenDetailBindingMode; }
private void GetViewPropertiesCore( List<DependencyProperty> viewProperties, ViewPropertyMode viewPropertyMode ) { FieldInfo[] fields = this.GetType().GetFields( BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy ); foreach( FieldInfo field in fields ) { //filter out any public static field that is not a DependencyProperty ( no examples ) if( field.FieldType == typeof( DependencyProperty ) ) { object[] viewPropertyAttributes = field.GetCustomAttributes( typeof( ViewPropertyAttribute ), true ); //If there is no attribute set on the DP field. if( viewPropertyAttributes.GetLength( 0 ) == 0 ) { //Do nothing, the DP shall not be used as a ViewProperty } else if( viewPropertyAttributes.GetLength( 0 ) == 1 ) { //The attribute has been set on the DP field. ViewPropertyAttribute attrib = ( ViewPropertyAttribute )viewPropertyAttributes[ 0 ]; if( viewPropertyMode == attrib.ViewPropertyMode ) { viewProperties.Add( ( DependencyProperty )field.GetValue( null ) ); // parameter is ignored for static fields. } } else { //More than one ViewProperty attribute has been set on the same field. throw new InvalidOperationException( "An attempt was made to the ViewProperty Attribute more than once on a single DependencyProperty field." ); } } // end if: FieldType is DependencyProperty } //end foreach: fields }
internal ViewPropertyAttribute(ViewPropertyMode viewPropertyMode, FlattenDetailBindingMode flattenDetailBindingMode) { m_viewPropertyMode = viewPropertyMode; m_flattenDetailBindingMode = flattenDetailBindingMode; }
public ViewPropertyAttribute(ViewPropertyMode viewPropertyMode) : this(viewPropertyMode, FlattenDetailBindingMode.Default) { }
internal ViewPropertyAttribute( ViewPropertyMode viewPropertyMode, FlattenDetailBindingMode flattenDetailBindingMode ) { m_viewPropertyMode = viewPropertyMode; m_flattenDetailBindingMode = flattenDetailBindingMode; }
public ViewPropertyAttribute( ViewPropertyMode viewPropertyMode ) : this( viewPropertyMode, FlattenDetailBindingMode.Default ) { }
public ViewPropertyAttribute( ViewPropertyMode viewPropertyMode ) { m_viewPropertyMode = viewPropertyMode; }
public ViewPropertyAttribute(ViewPropertyMode viewPropertyMode) { m_viewPropertyMode = viewPropertyMode; }
internal ViewPropertyStruct( DependencyProperty dependencyProperty, ViewPropertyMode viewPropertyMode, FlattenDetailBindingMode flattenDetailBindingMode ) { if( dependencyProperty == null ) throw new ArgumentNullException( "dependencyProperty" ); this.DependencyProperty = dependencyProperty; this.ViewPropertyMode = viewPropertyMode; this.FlattenDetailBindingMode = flattenDetailBindingMode; }
private IEnumerable<ViewPropertyStruct> GetViewPropertiesCore( ViewPropertyMode viewPropertyMode ) { var fields = this.GetType().GetFields( BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy ); foreach( FieldInfo field in fields ) { //Filter out any public static field that is not a DependencyProperty ( no examples ) if( field.FieldType != typeof( DependencyProperty ) ) continue; //Filter out all DependencyProperty that doesn't match the ViewPropertyMode. var attribute = ViewBase.GetViewPropertyAttribute( field ); if( ( attribute == null ) || ( attribute.ViewPropertyMode != viewPropertyMode ) ) continue; var dependencyProperty = ( DependencyProperty )field.GetValue( null ); // parameter is ignored for static fields. Debug.Assert( dependencyProperty != null ); if( dependencyProperty.ReadOnly ) throw new InvalidOperationException( "An attempt was made to return a read-only property. Dependency properties returned by ViewBase.GetViewPropertiesCore() cannot be read-only." ); yield return new ViewPropertyStruct( dependencyProperty, attribute.ViewPropertyMode, attribute.FlattenDetailBindingMode ); } }