Delegato AttributeCallback

Viene chiamato quando sono necessari attributi per un tipo.

Spazio dei nomi:  Microsoft.Windows.Design.Metadata
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Sintassi

'Dichiarazione
Public Delegate Sub AttributeCallback ( _
    builder As AttributeCallbackBuilder _
)
public delegate void AttributeCallback(
    AttributeCallbackBuilder builder
)
public delegate void AttributeCallback(
    AttributeCallbackBuilder^ builder
)
type AttributeCallback = 
    delegate of 
        builder:AttributeCallbackBuilder -> unit
JScript non supporta i delegati.

Parametri

Note

Utilizzare il delegato AttributeCallback quando si popola una tabella di attributi di grandi dimensioni. Utilizzando il modello di callback, il popolamento della tabella di attributi viene posticipato finché la finestra di progettazione non richiede i metadati Design-Time per un tipo.

Esempi

Nell'esempio di codice seguente viene illustrato come creare e popolare una tabella di attributi utilizzando la classe AttributeCallbackBuilder.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows;

using Microsoft.Windows.Design.Features;
using Microsoft.Windows.Design.Metadata;

// The ProvideMetadata assembly-level attribute indicates to designers
// that this assembly contains a class that provides an attribute table. 
[assembly: ProvideMetadata(typeof(CustomControlLibrary.VisualStudio.Design.Metadata))]

namespace CustomControlLibrary.VisualStudio.Design
{
    // 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();

                // Build the attribute table by using the AttributeCallbackBuilder 
                // class. The attribute table is not populated until the designer
                // needs it, which is more efficient for large attribute tables.
                builder.AddCallback(
                    typeof(Button),
                    delegate(AttributeCallbackBuilder callbackBuilder)
                    {
                        callbackBuilder.AddCustomAttributes(
                            new DefaultPropertyAttribute("Content"));

                        // Apply the ReadOnlyAttribute to the Background property 
                        // of the Button class.
                        callbackBuilder.AddCustomAttributes(
                            "Background",
                            new ReadOnlyAttribute(true));
                    });

                return builder.CreateTable();
            }
        }
    }
}

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.Windows.Design.Metadata

AttributeTableBuilder

AddCallback

AttributeTable

Altre risorse

Procedura dettagliata: creazione di uno strumento decorativo visuale in fase di progettazione

Informazioni sull'estensibilità Progettazione WPF