NewItemTypesAttribute, classe
Utilisé pour spécifier les types d'objets qui peuvent être assignés comme valeur d'une propriété ou comme valeur d'un type de propriété.
Hiérarchie d'héritage
System.Object
System.Attribute
Microsoft.Windows.Design.PropertyEditing.NewItemTypesAttribute
Espace de noms : Microsoft.Windows.Design.PropertyEditing
Assembly : Microsoft.Windows.Design.Interaction (dans Microsoft.Windows.Design.Interaction.dll)
Syntaxe
'Déclaration
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Property, AllowMultiple := True)> _
Public NotInheritable Class NewItemTypesAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Property, AllowMultiple = true)]
public sealed class NewItemTypesAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Property, AllowMultiple = true)]
public ref class NewItemTypesAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Property, AllowMultiple = true)>]
type NewItemTypesAttribute =
class
inherit Attribute
end
public final class NewItemTypesAttribute extends Attribute
Le type NewItemTypesAttribute expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
NewItemTypesAttribute(Type) | Initialise une nouvelle instance de la classe NewItemTypesAttribute. | |
NewItemTypesAttribute(array<Type[]) | Initialise une nouvelle instance de la classe NewItemTypesAttribute. |
Début
Propriétés
Nom | Description | |
---|---|---|
FactoryType | Obtient ou définit le type de fabrique associé à cet attribut. | |
TypeId | Récupère l'ID de type pour cet attribut. (Substitue Attribute.TypeId.) | |
Types | Obtient une liste des objets Type que cet attribut déclare comme étant de nouveaux types d'éléments valides. |
Début
Méthodes
Nom | Description | |
---|---|---|
Equals | Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) | |
GetHashCode | Retourne le code de hachage pour cette instance. (Hérité de Attribute.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
IsDefaultAttribute | En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.) | |
Match | En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
Début
Implémentations d'interface explicite
Nom | Description | |
---|---|---|
_Attribute.GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.) | |
_Attribute.GetTypeInfo | Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.) | |
_Attribute.GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.) | |
_Attribute.Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.) |
Début
Notes
Utilisez les classes NewItemFactory et NewItemTypesAttribute pour étendre les éléments qui apparaissent dans une liste de types à ajouter dans un éditeur de collections.
Utilisez NewItemTypesAttribute pour associer une liste de types à une propriété. En général, l'utilisateur peut effectuer une sélection dans cette liste de types. Si la valeur de propriété est nullune référence null (Nothing en Visual Basic), une nouvelle instance du type sélectionné est assignée à la propriété. Une nouvelle instance est ajoutée à une propriété dont le type est une collection.
Si une fabrique n'est pas spécifiée, l'écran Ajouter un élément de la fenêtre Propriétés utilise le nom du type pour remplir la liste des types qui peuvent être ajoutés. Le constructeur par défaut du type est utilisé pour instancier le type sélectionné.
La liste des types peut contenir des types abstraits. Lorsqu'un type abstrait est répertorié, une fabrique doit être spécifiée.
NewItemTypesAttribute peut être utilisé à plusieurs reprises sur une propriété, qui permet de définir plusieurs fabriques sur une propriété. Cette fonctionnalité est utile pour ajouter différents éléments dans la liste Ajouter un élément du même type. Par exemple, une fabrique peut ajouter un MenuItem avec un arrière-plan rouge et une autre peut ajouter un MenuItem avec un arrière-plan noir.
Si la propriété représente une collection, NewItemTypesAttribute spécifie les types d'objets pour lesquels des instances peuvent être créées comme des éléments dans cette collection.
Exemples
L'exemple de code suivant indique comment spécifier des types et les fabriques correspondantes à l'aide de NewItemTypesAttribute.
Imports System
Imports System.Collections
Imports System.Text
Imports System.Windows.Controls
Imports System.Windows
Imports Microsoft.Windows.Design.PropertyEditing
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Shapes
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Public Class ControlWithCollectionProperty
Inherits Button
Private myCollMultipleTypesNoFactory As New ArrayList()
Private myCollTypeWithFactory As New ArrayList()
Private myCollTypeWithMultipleFactories As New ArrayList()
Private myCollMultipleTypesWithFactory As New ArrayList()
Private myCollMultipleTypesInvalid As New ArrayList()
<NewItemTypesAttribute(GetType(Button), GetType(SolidColorBrush), GetType(Integer))> _
Public Property CollMultipleTypesNoFactory() As ArrayList
Get
Return myCollMultipleTypesNoFactory
End Get
Set
myCollMultipleTypesNoFactory = value
End Set
End Property
<NewItemTypesAttribute(GetType(MyType), FactoryType := GetType(MyTypeFactory))> _
Public Property CollTypeWithFactory() As ArrayList
Get
Return myCollTypeWithFactory
End Get
Set
myCollTypeWithFactory = value
End Set
End Property
<NewItemTypesAttribute(GetType(MyType), FactoryType := GetType(MyTypeAlternateFactory)), NewItemTypesAttribute(GetType(MyType), FactoryType := GetType(MyTypeFactory))> _
Public Property CollTypeWithMultipleFactories() As ArrayList
Get
Return myCollTypeWithMultipleFactories
End Get
Set
myCollTypeWithMultipleFactories = value
End Set
End Property
' The following code shows GetImage returning an
' ImageSource, Image Control, and Rectangle.
<NewItemTypesAttribute(GetType(MyType), GetType(Button), GetType(Brush), FactoryType := GetType(MyMultipleTypesFactory))> _
Public Property CollMultipleTypesWithFactory() As ArrayList
Get
Return myCollMultipleTypesWithFactory
End Get
Set
myCollMultipleTypesWithFactory = value
End Set
End Property
' The following case is not valid, because it contains
' a type that does not have a default constructor, and
' no factory is specified.
<NewItemTypesAttribute(GetType(Button), GetType(Brush), GetType(Size))> _
Public Property CollMultipleTypesInvalid() As ArrayList
Get
Return myCollMultipleTypesInvalid
End Get
Set
myCollMultipleTypesInvalid = value
End Set
End Property
End Class
using System;
using System.Collections;
using System.Text;
using System.Windows.Controls;
using System.Windows;
using Microsoft.Windows.Design.PropertyEditing;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace PropertyEditingAttributeTestControls
{
public class ControlWithCollectionProperty : Button
{
private ArrayList myCollMultipleTypesNoFactory = new ArrayList();
private ArrayList myCollTypeWithFactory = new ArrayList();
private ArrayList myCollTypeWithMultipleFactories = new ArrayList();
private ArrayList myCollMultipleTypesWithFactory = new ArrayList();
private ArrayList myCollMultipleTypesInvalid = new ArrayList();
[NewItemTypesAttribute(typeof(Button), typeof(SolidColorBrush), typeof(int))]
public ArrayList CollMultipleTypesNoFactory
{
get
{
return myCollMultipleTypesNoFactory;
}
set
{
myCollMultipleTypesNoFactory = value;
}
}
[NewItemTypesAttribute(typeof(MyType), FactoryType=typeof(MyTypeFactory))]
public ArrayList CollTypeWithFactory
{
get
{
return myCollTypeWithFactory;
}
set
{
myCollTypeWithFactory = value;
}
}
[NewItemTypesAttribute(
typeof(MyType),
FactoryType = typeof(MyTypeAlternateFactory))]
[NewItemTypesAttribute(
typeof(MyType),
FactoryType = typeof(MyTypeFactory))]
public ArrayList CollTypeWithMultipleFactories
{
get
{
return myCollTypeWithMultipleFactories;
}
set
{
myCollTypeWithMultipleFactories = value;
}
}
// The following code shows GetImage returning an
// ImageSource, Image Control, and Rectangle.
[NewItemTypesAttribute(
typeof(MyType),
typeof(Button),
typeof(Brush),
FactoryType = typeof(MyMultipleTypesFactory))]
public ArrayList CollMultipleTypesWithFactory
{
get
{
return myCollMultipleTypesWithFactory;
}
set
{
myCollMultipleTypesWithFactory = value;
}
}
// The following case is not valid, because it contains
// a type that does not have a default constructor, and
// no factory is specified.
[NewItemTypesAttribute(typeof(Button), typeof(Brush), typeof(Size))]
public ArrayList CollMultipleTypesInvalid
{
get
{
return myCollMultipleTypesInvalid;
}
set
{
myCollMultipleTypesInvalid = value;
}
}
}
}
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