Partilhar via


Classe PropertyOrder

Usado para conjunto a ordem na qual as propriedades aparecem em uma categoria ou em uma lista de subpropriedades.

Namespace:  Microsoft.Windows.Design.PropertyEditing
Assembly:  Microsoft.Windows.Design (em Microsoft.Windows.Design.dll)

Sintaxe

Public NotInheritable Class PropertyOrder _
    Inherits OrderToken

Dim instance As PropertyOrder
public sealed class PropertyOrder : OrderToken
public ref class PropertyOrder sealed : public OrderToken
public final class PropertyOrder extends OrderToken

Comentários

Criar particular PropertyOrder instâncias para agrupar um conjunto específico de propriedades na janela Propriedades.

The PropertyOrder classe controla a propriedade pedidos, que inclui raiz propriedades e subpropriedades. Propriedades de raiz são ordenadas primeiro em categorias, em seguida, em ordem alfabética e, finalmente por PropertyOrder. Subpropriedades são ordenadas por PropertyOrder e, em seguida, em ordem alfabética.

Observação:

Esse comportamento é diferente do Designer de Formulários do Windows, que usa o GetProperties método para determinar a ordem das propriedades. O WPF Designer, propriedades são classificadas usando o PropertyOrder classe.

Ordem padrão tokens fornecidos pelo PropertyOrder classe. Esses símbolos ordem definida pelo sistema incluem o Early, Default e Late Propriedades. The Early ordem de token refere-se a uma posição superior na janela Propriedades.

Propriedades sem uma ordem de propriedade específico recebem o Default ordem. Você pode derivar dessa classe e criar seus próprios tokens ordem personalizada, que podem garantir a ordem de propriedade e o agrupamento de propriedade.

Exemplos

O exemplo de código a seguir mostra como para derivar a partir de PropertyOrder para implementar um

LayoutSizePriority classe que é usado para o Width e Height Propriedades. Ele é criado após o Early ordem. Portanto, ele é exibido posteriormente na lista de Early Propriedades. The LayoutAlignmentPriority é usado para o HorizontalAlignment e VerticalAlignment propriedades e é criado após o LayoutSizePriority.

The PropertyOrder instâncias são vinculadas a propriedades, usando PropertyOrderAttribute. The CreateBefore e CreateAfter métodos de posição Width antes de Height e HorizontalAlignment antes 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


Friend Class Metadata
    Implements IRegisterMetadata

    ' Called by the designer to register any design-time metadata.
    Public Sub Register() Implements IRegisterMetadata.Register
        Dim builder As New AttributeTableBuilder()

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

        builder.AddCustomAttributes( _
            GetType(Button), _
            FrameworkElement.WidthProperty, _
            New PropertyOrderAttribute( _
                PropertyOrder.CreateBefore( _
                    PropertyOrderTokens.LayoutSizePriority)))

        builder.AddCustomAttributes( _
            GetType(Button), _
            FrameworkElement.VerticalAlignmentProperty, _
            New PropertyOrderAttribute( _
                PropertyOrder.CreateAfter( _
                    PropertyOrderTokens.LayoutAlignmentPriority)))

        builder.AddCustomAttributes( _
            GetType(Button), _
            FrameworkElement.HorizontalAlignmentProperty, _
            New PropertyOrderAttribute( _
                PropertyOrder.CreateBefore( _
                    PropertyOrderTokens.LayoutAlignmentPriority)))

        MetadataStore.AddAttributeTable(builder.CreateTable())

    End Sub
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;
        }
    }
}

internal class Metadata : IRegisterMetadata
{
    // Called by the designer to register any design-time metadata.
    public void Register()
    {
        AttributeTableBuilder builder = new AttributeTableBuilder();

        builder.AddCustomAttributes(
            typeof( Button ),
            FrameworkElement.HeightProperty, 
            new PropertyOrderAttribute(
                PropertyOrder.CreateAfter(
                PropertyOrderTokens.LayoutSizePriority)));

        builder.AddCustomAttributes(
            typeof(Button),
            FrameworkElement.WidthProperty, 
            new PropertyOrderAttribute(
                PropertyOrder.CreateBefore(
                PropertyOrderTokens.LayoutSizePriority))); 

        builder.AddCustomAttributes(
            typeof(Button),
            FrameworkElement.VerticalAlignmentProperty, 
            new PropertyOrderAttribute(
                PropertyOrder.CreateAfter(
                PropertyOrderTokens.LayoutAlignmentPriority))); 

        builder.AddCustomAttributes(
            typeof(Button),
            FrameworkElement.HorizontalAlignmentProperty, 
            new PropertyOrderAttribute(
                PropertyOrder.CreateBefore(
                PropertyOrderTokens.LayoutAlignmentPriority)));

        MetadataStore.AddAttributeTable(builder.CreateTable());
    }
}

Hierarquia de herança

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

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Membros PropertyOrder

Namespace Microsoft.Windows.Design.PropertyEditing

Outros recursos

Propriedade de edição de arquitetura

Extensibilidade do WPF Designer