Classe NewItemTypesAttribute
Utilizzato per specificare quali tipi di oggetto possono essere assegnati come valore di una proprietà o come valore di un tipo di proprietà.
Gerarchia di ereditarietà
System.Object
System.Attribute
Microsoft.Windows.Design.PropertyEditing.NewItemTypesAttribute
Spazio dei nomi: Microsoft.Windows.Design.PropertyEditing
Assembly: Microsoft.Windows.Design.Interaction (in Microsoft.Windows.Design.Interaction.dll)
Sintassi
'Dichiarazione
<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
Il tipo NewItemTypesAttribute espone i seguenti membri.
Costruttori
Nome | Descrizione | |
---|---|---|
NewItemTypesAttribute(Type) | Inizializza una nuova istanza della classe NewItemTypesAttribute. | |
NewItemTypesAttribute(array<Type[]) | Inizializza una nuova istanza della classe NewItemTypesAttribute. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
FactoryType | Ottiene o imposta il tipo di factory associato a questo attributo. | |
TypeId | Ottiene l'identificatore del tipo per l'attributo. (Esegue l'override di Attribute.TypeId). | |
Types | Ottiene un elenco di oggetti Type dichiarati da questo attributo come nuovi tipi di elemento validi. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Equals | Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute) | |
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 | Restituisce il codice hash per l'istanza. (Ereditato da Attribute) | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
IsDefaultAttribute | Quando è sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito della classe derivata. (Ereditato da Attribute) | |
Match | Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) | |
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) | |
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
In alto
Implementazioni esplicite dell'interfaccia
Nome | Descrizione | |
---|---|---|
_Attribute.GetIDsOfNames | Esegue il mapping di un set di nomi a un set corrispondente di ID di invio. (Ereditato da Attribute) | |
_Attribute.GetTypeInfo | Recupera le informazioni sul tipo relative a un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute) | |
_Attribute.GetTypeInfoCount | Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) | |
_Attribute.Invoke | Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |
In alto
Note
Utilizzare le classi NewItemFactory e NewItemTypesAttribute per estendere gli elementi visualizzati in un elenco di tipi da aggiungere in un editor dell'insieme.
Utilizzare NewItemTypesAttribute per associare un elenco di tipi a una proprietà. In genere, l'utente può eseguire la selezione da questo elenco di tipi. Se il valore della proprietà è nullriferimento null (Nothing in Visual Basic), alla proprietà viene assegnata una nuova istanza del tipo selezionato. Viene aggiunta una nuova istanza a una proprietà il cui tipo sia costituito da un insieme.
Se non è specificata una factory, l'interfaccia utente "Aggiungi elemento" della finestra Proprietà utilizza il nome del tipo per popolare l'elenco di tipi che possono essere aggiunti. Per creare un'istanza del tipo selezionato viene utilizzato il costruttore predefinito del tipo.
L'elenco di tipi può contenere tipi astratti. Quando nell'elenco viene indicato un tipo astratto, è necessario specificare una factory.
NewItemTypesAttribute può essere utilizzato diverse volte su una proprietà, in modo da impostare più di una factory su una proprietà. Ciò consente di visualizzare elementi diversi nell'elenco "Aggiungi elemento" per lo stesso tipo. Ad esempio, con una factory è stato possibile aggiungere un oggetto MenuItem con sfondo rosso, mentre un'altra ha consentito di aggiungere un oggetto MenuItem con sfondo nero.
Se la proprietà rappresenta un insieme, NewItemTypesAttribute specifica i tipi di oggetto per i quali le istanze possono essere create come elementi di quell'insieme.
Esempi
Nell'esempio di codice seguente viene illustrato come specificare i tipi e le factory corrispondenti utilizzando 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;
}
}
}
}
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