PropertyOrder-Klasse
Aktualisiert: November 2007
Legt die Reihenfolge fest, in der die Eigenschaften in einer Kategorie oder in einer Liste der Untereigenschaften angezeigt werden.
Namespace: Microsoft.Windows.Design.PropertyEditing
Assembly: Microsoft.Windows.Design (in Microsoft.Windows.Design.dll)
Syntax
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
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.
![]() |
---|
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 sind 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
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());
}
}
Vererbungshierarchie
System.Object
Microsoft.Windows.Design.OrderToken
Microsoft.Windows.Design.PropertyEditing.PropertyOrder
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