Partilhar via


Classe NewItemTypesAttribute

Usado para especificar quais tipos de objeto podem ser atribuídos sistema autônomo o valor de uma propriedade ou sistema autônomo o valor de um tipo de propriedade.

Namespace:  Microsoft.Windows.Design.PropertyEditing
Assembly:  Microsoft.Windows.Design (em Microsoft.Windows.Design.dll)

Sintaxe

<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Property, AllowMultiple := True)> _
Public NotInheritable Class NewItemTypesAttribute _
    Inherits Attribute

Dim instance As NewItemTypesAttribute
[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
public final class NewItemTypesAttribute extends Attribute

Comentários

Use o NewItemFactory e NewItemTypesAttribute classes para estender os itens que aparecem em uma lista de tipos a ser adicionada em um editor de coleção.

Use NewItemTypesAttribute para associar uma lista de tipos para uma propriedade. Normalmente, o usuário pode selecionar da lista de tipos.Se o valor da propriedade é nulluma referência nula (Nothing no Visual Basic), uma nova instância do tipo selecionado é atribuída à propriedade. Uma nova instância é adicionada a uma propriedade cujo tipo é uma coleção.

Se não for especificada uma fábrica, a janela Propriedades “ Adicionar item ” UI usa o nome do tipo para popular a lista de tipos que podem ser adicionados.O construtor do tipo padrão é usado para criar uma instância do tipo selecionado.

A lista de tipos pode conter tipos abstratos.Quando um tipo abstrato é listado, deve ser especificada uma fábrica.

NewItemTypesAttribute pode ser usada várias vezes em uma propriedade, que permite definir mais de uma fábrica em uma propriedade. Isso é útil para mostrar itens diferentes na lista de “ adicionar item ” para o mesmo tipo.Por exemplo, uma fábrica pode adicionar um MenuItem com um plano de fundo vermelho e outra poderia adicionar um MenuItem com um plano de fundo preto.

Se a propriedade representa uma coleção, a NewItemTypesAttribute Especifica sistema autônomo tipos de objeto para a qual instância pode ser criada sistema autônomo itens dessa coleção.

Exemplos

O exemplo de código a seguir mostra como especificar tipos e fábricas correspondentes usando a 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;
            }
        }
    }
}

Hierarquia de herança

System.Object
  System.Attribute
    Microsoft.Windows.Design.PropertyEditing.NewItemTypesAttribute

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Membros NewItemTypesAttribute

Namespace Microsoft.Windows.Design.PropertyEditing

NewItemFactory

Outros recursos

Propriedade de edição de arquitetura

Extensibilidade do WPF Designer