PropertyOrder - класс
Используется для определения порядка, в котором свойства будут отображаться в категории или списке подчиненных свойств.
Иерархия наследования
System.Object
Microsoft.Windows.Design.OrderToken
Microsoft.Windows.Design.PropertyEditing.PropertyOrder
Пространство имен: Microsoft.Windows.Design.PropertyEditing
Сборка: Microsoft.Windows.Design.Interaction (в Microsoft.Windows.Design.Interaction.dll)
Синтаксис
'Декларация
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
Тип PropertyOrder предоставляет следующие члены.
Свойства
Имя | Описание | |
---|---|---|
![]() ![]() |
Default | Получает системный порядок по умолчанию. |
![]() ![]() |
Early | Получает системный "ранний" порядок. |
![]() ![]() |
Late | Получает системный "поздний" порядок. |
В начало страницы
Методы
Имя | Описание | |
---|---|---|
![]() |
CompareTo | Сравнивает этот маркер порядка с указанным. (Унаследовано от OrderToken.) |
![]() ![]() |
CreateAfter | Создает объект PropertyOrder, добавляемый после указанного токена. |
![]() ![]() |
CreateBefore | Создает объект PropertyOrder, добавляемый перед указанным токеном. |
![]() |
Equals | Определяет, равен ли заданный объект Object текущему объекту Object. (Унаследовано от OrderToken.) |
![]() |
Finalize | Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.) |
![]() |
GetHashCode | Играет роль хэш-функции для определенного типа. (Унаследовано от OrderToken.) |
![]() |
GetType | Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.) |
![]() |
MemberwiseClone | Создает неполную копию текущего объекта Object. (Унаследовано от Object.) |
![]() |
ResolveConflict | Вызывается с помощью реализации по умолчанию CompareTo, если два объекта OrderToken эквивалентны. (Унаследовано от OrderToken.) |
![]() |
ToString | Возвращение строки, представляющей текущий объект. (Унаследовано от Object.) |
В начало страницы
Заметки
Чтобы сгруппировать определенный набор свойств в окне свойств, создайте закрытые экземпляры PropertyOrder.
Класс PropertyOrder предназначен для упорядочения свойств (в том числе корневых и подчиненных свойств). Корневые свойства упорядочиваются сначала по категориям, затем в алфавитном порядке, а затем по значению PropertyOrder. Подчиненные свойства упорядочиваются сначала по значению PropertyOrder, а затем в алфавитном порядке.
Примечание
Такое поведение отличается от конструктора Windows Forms, в котором для определения порядка свойств используется метод GetProperties.В сред. Конструктор WPF свойства сортируются с помощью класса PropertyOrder.
В классе PropertyOrder представлены стандартные токены порядка. К системным токенам порядка относятся следующие свойства: Early, Default и Late. Токен порядка Early содержит ссылку на более высокую позицию в окне "Свойства".
Свойствам, которым не назначен определенный порядок, присваивается порядок Default. Допускается создание производных от описанного выше классов и пользовательских токенов порядка, что позволяет обеспечить правильность группировки свойств.
Примеры
В следующем примере кода показано, как создать класс, являющийся производным от класса PropertyOrder, чтобы реализовать класс
Класс LayoutSizePriority, который используется для свойств Width и Height. Производный класс создается после свойства порядка Early. Таким образом, в списке он будет отображаться после свойств Early. Объект LayoutAlignmentPriority используется для свойств HorizontalAlignment и VerticalAlignment создается после LayoutSizePriority.
Экземпляры PropertyOrder привязываются к свойствам с помощью объекта PropertyOrderAttribute. Методы CreateBefore и CreateAfter располагают свойство Width до свойства Height, а HorizontalAlignment — до свойства 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();
}
}
}
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
Microsoft.Windows.Design.PropertyEditing - пространство имен