Compartir a través de


PropertyOrder (Clase)

Se utiliza para establecer el orden en que aparecen las propiedades en una categoría o en una lista de subpropiedades.

Jerarquía de herencia

System.Object
  Microsoft.Windows.Design.OrderToken
    Microsoft.Windows.Design.PropertyEditing.PropertyOrder

Espacio de nombres:  Microsoft.Windows.Design.PropertyEditing
Ensamblado:  Microsoft.Windows.Design.Interaction (en Microsoft.Windows.Design.Interaction.dll)

Sintaxis

'Declaración
Public NotInheritable Class PropertyOrder _
    Inherits OrderToken
public sealed class PropertyOrder : OrderToken
public ref class PropertyOrder sealed : public OrderToken
[<Sealed>]
type PropertyOrder =  
    class
        inherit OrderToken
    end
public final class PropertyOrder extends OrderToken

El tipo PropertyOrder expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad públicaMiembro estático Default Obtiene la posición de orden predeterminada definida por el sistema.
Propiedad públicaMiembro estático Early Obtiene la posición de orden anterior definida por el sistema.
Propiedad públicaMiembro estático Late Obtiene la posición de orden posterior definida por el sistema.

Arriba

Métodos

  Nombre Descripción
Método público CompareTo Compara este token de orden con el token de orden especificado. (Se hereda de OrderToken).
Método públicoMiembro estático CreateAfter Crea un objeto PropertyOrder que se agrega después del token especificado.
Método públicoMiembro estático CreateBefore Crea un objeto PropertyOrder que se agrega delante del token especificado.
Método público Equals Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de OrderToken).
Método protegido Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de OrderToken).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método protegido MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegido ResolveConflict Función a la que llama la implementación CompareTo predeterminada cuando dos objetos OrderToken parecen ser equivalentes. (Se hereda de OrderToken).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).

Arriba

Comentarios

Cree instancias privadas de PropertyOrder para agrupar un conjunto determinado de propiedades en la ventana Propiedades.

La clase PropertyOrder controla el orden en que aparecen las propiedades, incluidas las propiedades raíz y las subpropiedades. Las propiedades raíz se ordenan primero en categorías, después alfabéticamente y, finalmente, por PropertyOrder. Las subpropiedades se ordenan por PropertyOrder y después alfabéticamente.

Nota

Este comportamiento difiere del Diseñador de Windows Forms, que utiliza el método GetProperties para determinar el orden de las propiedades. En WPF Designer, las propiedades se ordenan mediante la clase PropertyOrder.

La clase PropertyOrder proporciona los tokens de orden estándar. Estos tokens de orden definidos por el sistema incluyen las propiedades Early, Default y Late. El token de orden Early hace referencia a una posición superior en la ventana Propiedades.

A las propiedades que no tengan un orden concreto se les asigna el orden Default. Puede derivar de esta clase y crear tokens de orden personalizados que garanticen el orden y la agrupación de las propiedades.

Ejemplos

En el ejemplo de código siguiente se muestra cómo derivar de PropertyOrder para implementar

una clase LayoutSizePriority que se utiliza para las propiedades Width y Height. Se crea después del orden Early. Por consiguiente, aparece en la lista después de las propiedades Early. LayoutAlignmentPriority se utiliza para las propiedades HorizontalAlignment y VerticalAlignment y se crea después de LayoutSizePriority.

Las instancias de PropertyOrder se enlazan a las propiedades mediante el atributo PropertyOrderAttribute. Los métodos CreateBefore y CreateAfter colocan Width delante de Height y colocan HorizontalAlignment delante de VerticalAlignment.

Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports Microsoft.Windows.Design.PropertyEditing
Imports Microsoft.Windows.Design.Metadata

Public Class PropertyOrderTokens
    Private Shared layoutSizePriorityValue As PropertyOrder
    Private Shared layoutAlignmentPriorityValue As PropertyOrder


    Public Shared ReadOnly Property LayoutSizePriority() As PropertyOrder
        Get
            If layoutSizePriorityValue Is Nothing Then
                LayoutSizePriority = PropertyOrder.CreateAfter(PropertyOrder.Early)
            End If

            Return layoutSizePriorityValue
        End Get
    End Property


    Public Shared ReadOnly Property LayoutAlignmentPriority() As PropertyOrder
        Get
            If layoutAlignmentPriorityValue Is Nothing Then
                layoutAlignmentPriorityValue = PropertyOrder.CreateAfter(PropertyOrderTokens.LayoutSizePriority)
            End If

            Return layoutAlignmentPriorityValue
        End Get
    End Property
End Class

' Container for any general design-time metadata to initialize.
' Designers look for a type in the design-time assembly that 
' implements IProvideAttributeTable. If found, designers instantiate
' this class and access its AttributeTable property automatically.
Friend Class Metadata
    Implements IProvideAttributeTable

    ' Accessed by the designer to register any design-time metadata.
    Public ReadOnly Property AttributeTable() As AttributeTable _
        Implements IProvideAttributeTable.AttributeTable
        Get
            Dim builder As New AttributeTableBuilder()

            builder.AddCustomAttributes( _
                GetType(Button), _
                "HeightProperty", _
                New PropertyOrderAttribute( _
                    PropertyOrder.CreateAfter( _
                        PropertyOrderTokens.LayoutSizePriority)))

            builder.AddCustomAttributes( _
                GetType(Button), _
                "Width", _
                New PropertyOrderAttribute( _
                    PropertyOrder.CreateBefore( _
                        PropertyOrderTokens.LayoutSizePriority)))

            builder.AddCustomAttributes( _
                GetType(Button), _
                "VerticalAlignment", _
                New PropertyOrderAttribute( _
                    PropertyOrder.CreateAfter( _
                        PropertyOrderTokens.LayoutAlignmentPriority)))

            builder.AddCustomAttributes( _
                GetType(Button), _
                "HorizontalAlignment", _
                New PropertyOrderAttribute( _
                    PropertyOrder.CreateBefore( _
                        PropertyOrderTokens.LayoutAlignmentPriority)))

            Return builder.CreateTable()
        End Get
    End Property
End Class
using System;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Windows.Design.PropertyEditing;
using Microsoft.Windows.Design.Metadata;

public static class PropertyOrderTokens
{
    private static PropertyOrder layoutSizePriority;
    private static PropertyOrder layoutAlignmentPriority;

    public static PropertyOrder LayoutSizePriority
    {
        get
        {
            if (layoutSizePriority == null)
            {
                layoutSizePriority = PropertyOrder.CreateAfter(
                    PropertyOrder.Early);
            }

            return layoutSizePriority;
        }
    }

    public static PropertyOrder LayoutAlignmentPriority
    {
        get
        {
            if (layoutAlignmentPriority == null)
            {
                layoutAlignmentPriority = PropertyOrder.CreateAfter(
                    PropertyOrderTokens.LayoutSizePriority);
            }

            return layoutAlignmentPriority;
        }
    }
}

// Container for any general design-time metadata to initialize.
// Designers look for a type in the design-time assembly that 
// implements IProvideAttributeTable. If found, designers instantiate 
// this class and access its AttributeTable property automatically.
internal class Metadata : IProvideAttributeTable
{
    // Accessed by the designer to register any design-time metadata.
    public AttributeTable AttributeTable
    {
        get
        {
            AttributeTableBuilder builder = new AttributeTableBuilder();

            builder.AddCustomAttributes(
                typeof(Button),
                "Height",
                new PropertyOrderAttribute(
                    PropertyOrder.CreateAfter(
                    PropertyOrderTokens.LayoutSizePriority)));

            builder.AddCustomAttributes(
                typeof(Button),
                "Width",
                new PropertyOrderAttribute(
                    PropertyOrder.CreateBefore(
                    PropertyOrderTokens.LayoutSizePriority)));

            builder.AddCustomAttributes(
                typeof(Button),
                "VerticalAlignment",
                new PropertyOrderAttribute(
                    PropertyOrder.CreateAfter(
                    PropertyOrderTokens.LayoutAlignmentPriority)));

            builder.AddCustomAttributes(
                typeof(Button),
                "HorizontalAlignment",
                new PropertyOrderAttribute(
                    PropertyOrder.CreateBefore(
                    PropertyOrderTokens.LayoutAlignmentPriority)));

            return builder.CreateTable();
        }
    }
}

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

Microsoft.Windows.Design.PropertyEditing (Espacio de nombres)

Otros recursos

Arquitectura de edición de propiedades

Extensibilidad de WPF Designer