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 | |
---|---|---|
Default | Ottiene la posizione predefinita nell'ordine definita dal sistema. | |
Early | Ottiene la posizione prioritaria nell'ordine definita dal sistema. | |
Late | Ottiene la posizione subordinata nell'ordine definita dal sistema. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
CompareTo | Confronta questo token di ordinamento con il token di ordinamento specificato. (Ereditato da OrderToken) | |
CreateAfter | Crea un oggetto PropertyOrder che viene aggiunto dopo il token specificato. | |
CreateBefore | Crea un oggetto PropertyOrder che viene aggiunto prima del token specificato. | |
Equals | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da OrderToken) | |
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) | |
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da OrderToken) | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) | |
ResolveConflict | Viene chiamato dall'implementazione CompareTo predefinita quando due oggetti OrderToken sembrano essere equivalenti. (Ereditato da OrderToken) | |
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