Freigeben über


PropertyOrder-Klasse

Legt die Reihenfolge fest, in der die Eigenschaften in einer Kategorie oder in einer Liste der Untereigenschaften angezeigt werden.

Vererbungshierarchie

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

Namespace:  Microsoft.Windows.Design.PropertyEditing
Assembly:  Microsoft.Windows.Design.Interaction (in Microsoft.Windows.Design.Interaction.dll)

Syntax

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

Der PropertyOrder-Typ macht die folgenden Member verfügbar.

Eigenschaften

  Name Beschreibung
Öffentliche EigenschaftStatischer Member Default Ruft die systemdefinierte Standardsortierposition ab.
Öffentliche EigenschaftStatischer Member Early Ruft die systemdefinierte vordere Sortierposition ab.
Öffentliche EigenschaftStatischer Member Late Ruft die systemdefinierte hintere Sortierposition ab.

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode CompareTo Vergleicht dieses Reihenfolgetoken mit dem angegebenen Reihenfolgetoken. (Von OrderToken geerbt.)
Öffentliche MethodeStatischer Member CreateAfter Erstellt ein PropertyOrder-Objekt, das nach dem angegebenen Token hinzugefügt wird.
Öffentliche MethodeStatischer Member CreateBefore Erstellt ein PropertyOrder-Objekt, das vor dem angegebenen Token hinzugefügt wird.
Öffentliche Methode Equals Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von OrderToken geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von OrderToken geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte Methode ResolveConflict Wird von der CompareTo-Standardimplementierung aufgerufen, wenn zwei OrderToken-Objekte gleichwertig zu sein scheinen. (Von OrderToken geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Hinweise

Erstellen Sie private PropertyOrder-Instanzen, um einen bestimmten Satz von Eigenschaften im Eigenschaftenfenster zusammen zu gruppieren.

Die PropertyOrder-Klasse steuert die Eigenschaftensortierung, die Stammeigenschaften und Untereigenschaften einschließt. Stammeigenschaften werden zuerst in Kategorien sortiert, dann alphabetisch, und schließlich nach PropertyOrder. Untereigenschaften werden nach PropertyOrder und dann alphabetisch sortiert.

Tipp

Dieses Verhalten unterscheidet sich von dem des Windows Forms-Designers, der mithilfe der GetProperties-Methode die Reihenfolge der Eigenschaften bestimmt. Für den WPF-Designer werden Eigenschaften mit der PropertyOrder-Klasse sortiert.

Standard-Sortiertoken werden von der PropertyOrder-Klasse bereitgestellt. Diese systemdefinierten Sortiertoken schließen die Eigenschaften Early, Default und Late ein. Das Early-Sortiertoken verweist auf eine höhere Position im Eigenschaftenfenster.

Eigenschaften ohne eine bestimmte Eigenschaftenreihenfolge wird die Default-Reihenfolge zugewiesen. Sie können von dieser Klasse Ableitungen vornehmen und benutzerdefinierte Sortiertoken erstellen, die die Eigenschaftensortierung und Eigenschaftengruppierung sicherstellen können.

Beispiele

Das folgende Codebeispiel veranschaulicht, wie eine Ableitung von PropertyOrder erstellt wird, um eine

LayoutSizePriority-Klasse zu implementieren, die für die Eigenschaften Width und Height verwendet wird. Die Klasse wird nach der Early-Reihenfolge erstellt. Deshalb wird sie später in der Liste angezeigt als Early-Eigenschaften. Die LayoutAlignmentPriority wird für die Eigenschaften HorizontalAlignment und VerticalAlignment verwendet und nach der LayoutSizePriority erstellt.

Die PropertyOrder-Instanzen werden mit PropertyOrderAttribute an Eigenschaften gebunden. Die CreateBefore-Methode und die CreateAfter-Methode ordnen Width vor Height und HorizontalAlignment vor VerticalAlignment an.

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();
        }
    }
}

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.Windows.Design.PropertyEditing-Namespace

Weitere Ressourcen

Eigenschaftenbearbeitungsarchitektur

WPF-Designer-Erweiterbarkeit