Classe PropertyOrder

Utilizzato per impostare l'ordine in cui le proprietà vengono visualizzate in una categoria o in un elenco di sottoproprietà.

Gerarchia di ereditarietà

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

Spazio dei nomi:  Microsoft.Windows.Design.PropertyEditing
Assembly:  Microsoft.Windows.Design.Interaction (in Microsoft.Windows.Design.Interaction.dll)

Sintassi

'Dichiarazione
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

Il tipo PropertyOrder espone i seguenti membri.

Proprietà

  Nome Descrizione
Proprietà pubblicaMembro statico Default Ottiene la posizione predefinita nell'ordine definita dal sistema.
Proprietà pubblicaMembro statico Early Ottiene la posizione prioritaria nell'ordine definita dal sistema.
Proprietà pubblicaMembro statico Late Ottiene la posizione subordinata nell'ordine definita dal sistema.

In alto

Metodi

  Nome Descrizione
Metodo pubblico CompareTo Confronta questo token di ordinamento con il token di ordinamento specificato. (Ereditato da OrderToken)
Metodo pubblicoMembro statico CreateAfter Crea un oggetto PropertyOrder che viene aggiunto dopo il token specificato.
Metodo pubblicoMembro statico CreateBefore Crea un oggetto PropertyOrder che viene aggiunto prima del token specificato.
Metodo pubblico Equals Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da OrderToken)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da OrderToken)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo protetto ResolveConflict Viene chiamato dall'implementazione CompareTo predefinita quando due oggetti OrderToken sembrano essere equivalenti. (Ereditato da OrderToken)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Note

Creare istanze di PropertyOrder private per raggruppare un determinato insieme di proprietà nella finestra Proprietà.

La classe PropertyOrder controlla l'ordinamento delle proprietà, comprese le proprietà e le sottoproprietà radice. Le proprietà radice vengono ordinate prima in categorie, quindi alfabeticamente e infine in base a PropertyOrder. Le sottoproprietà vengono ordinate in base all'oggetto PropertyOrder e successivamente in ordine alfabetico.

Nota

Questo comportamento è diverso rispetto a Progettazione Windows Form, che utilizza il metodo GetProperties per determinare l'ordine delle proprietà. Per WPF Designer, le proprietà vengono ordinate utilizzando la classe PropertyOrder.

I token di ordinamento standard sono forniti dalla classe PropertyOrder. Questi token di ordinamento definiti dal sistema includono le proprietà Early, Default e Late. Il token di ordinamento Early si riferisce a una posizione più elevata nella finestra Proprietà.

Alle proprietà senza un ordine specifico viene assegnato l'ordine Default. È possibile derivare da questa classe e creare token di ordinamento personalizzati che possono garantire l'ordinamento e il raggruppamento delle proprietà.

Esempi

Nell'esempio di codice seguente viene illustrato come derivare da PropertyOrder per implementare una classe

Classe LayoutSizePriority utilizzata per le proprietà Width e Height. Viene creata dopo l'ordine Early. Pertanto, sarà visualizzata successivamente nell'elenco rispetto alle proprietà Early. LayoutAlignmentPriority è utilizzato per le proprietà HorizontalAlignment e VerticalAlignment e viene creato dopo LayoutSizePriority.

Le istanze di PropertyOrder vengono associate alle proprietà tramite PropertyOrderAttribute. I metodi CreateBefore e CreateAfter posizionano Width prima di Height e HorizontalAlignment prima di 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();
        }
    }
}

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.Windows.Design.PropertyEditing

Altre risorse

Architettura di modifica delle proprietà

Estensibilità di Progettazione WPF