Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
Utilisé pour définir l'ordre dans lequel les propriétés apparaissent dans une catégorie ou dans une liste de sous-propriétés.
Espace de noms : Microsoft.Windows.Design.PropertyEditing
Assembly : Microsoft.Windows.Design (dans Microsoft.Windows.Design.dll)
Syntaxe
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
Notes
Créez des instances privées de PropertyOrder pour regrouper un jeu de propriétés particulier dans la fenêtre Propriétés.
La classe PropertyOrder contrôle l'ordre des propriétés, qui inclut des propriétés racine et des sous-propriétés. Les propriétés racine apparaissent en premier par catégories, puis par alphabétique et enfin par PropertyOrder. Les sous-propriétés sont classées par PropertyOrder, puis par ordre alphabétique.
Remarque : |
|---|
Ce comportement est différent du concepteur Windows Forms, qui utilise la méthode GetProperties pour déterminer l'ordre des propriétés. Pour le Concepteur WPF, les propriétés sont triées à l'aide de la classe PropertyOrder. |
Les jetons d'ordre standard sont fournis par la classe PropertyOrder. Ces jetons d'ordre définis par le système comprennent les propriétés Early, Default et Late. Le jeton d'ordre Early désigne une position supérieure dans la fenêtre Propriétés.
L'ordre Default est affecté aux propriétés qui ne sont associées à aucun ordre particulier. Vous pouvez dériver de cette classe et créer vos propres jetons d'ordre personnalisés, garantissant ainsi l'ordre et le regroupement des propriétés.
Exemples
L'exemple de code suivant indique comment dériver de PropertyOrder pour implémenter une classe
LayoutSizePriority à utiliser pour les propriétés Width et Height. Cette classe est créée d'après l'ordre Early. Par conséquent, elle apparaît dans la liste après les propriétés Early. LayoutAlignmentPriority est appliqué aux propriétés HorizontalAlignment et VerticalAlignment et est créé après LayoutSizePriority.
Les instances de PropertyOrder sont liées aux propriétés à l'aide de PropertyOrderAttribute. Les méthodes CreateBefore et CreateAfter placent Width avant Height et HorizontalAlignment avant 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());
}
}
Hiérarchie d'héritage
System.Object
Microsoft.Windows.Design.OrderToken
Microsoft.Windows.Design.PropertyEditing.PropertyOrder
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi
Référence
Microsoft.Windows.Design.PropertyEditing, espace de noms
Remarque :