Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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
        }
Exemplo n.º 3
0
            internal ViewPropertyStruct(
                DependencyProperty dependencyProperty,
                ViewPropertyMode viewPropertyMode,
                FlattenDetailBindingMode flattenDetailBindingMode)
            {
                if (dependencyProperty == null)
                {
                    throw new ArgumentNullException("dependencyProperty");
                }

                this.DependencyProperty       = dependencyProperty;
                this.ViewPropertyMode         = viewPropertyMode;
                this.FlattenDetailBindingMode = flattenDetailBindingMode;
            }
Exemplo n.º 4
0
    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
    } 
Exemplo n.º 5
0
 internal ViewPropertyAttribute(ViewPropertyMode viewPropertyMode, FlattenDetailBindingMode flattenDetailBindingMode)
 {
     m_viewPropertyMode         = viewPropertyMode;
     m_flattenDetailBindingMode = flattenDetailBindingMode;
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 10
0
 public ViewPropertyAttribute(ViewPropertyMode viewPropertyMode)
 {
     m_viewPropertyMode = viewPropertyMode;
 }
Exemplo n.º 11
0
      internal ViewPropertyStruct(
        DependencyProperty dependencyProperty,
        ViewPropertyMode viewPropertyMode,
        FlattenDetailBindingMode flattenDetailBindingMode )
      {
        if( dependencyProperty == null )
          throw new ArgumentNullException( "dependencyProperty" );

        this.DependencyProperty = dependencyProperty;
        this.ViewPropertyMode = viewPropertyMode;
        this.FlattenDetailBindingMode = flattenDetailBindingMode;
      }
Exemplo n.º 12
0
    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 );
      }
    }