Procedura dettagliata: aggiunta di metadati della fase di progettazione personalizzati

WPF Designer per Visual Studio consente di fornire metadati della fase di progettazione personalizzati per finestre di progettazione diverse. È ad esempio possibile destinare esperienze di progettazione diverse ai controlli personalizzati in Visual Studio e in Expression Blend. Per registrare i metadati della fase di progettazione personalizzati con la finestra di progettazione, si implementa l'interfaccia IProvideAttributeTable e si chiama uno dei metodi AddCustomAttributes.

Questa procedura dettagliata mostra come fornire le implementazioni della fase di progettazione personalizzate per una libreria di controlli personalizzati WPF o Silverlight. Questa procedura dettagliata prevede l'esecuzione delle attività seguenti:

  • Creazione di un progetto di libreria di controlli personalizzati WPF.

  • Creazione di un assembly distinto per i metadati della fase di progettazione.

Al termine della procedura, si sarà in grado di fornire metadati della fase di progettazione personalizzati per un controllo personalizzato WPF o Silverlight.

Nota

È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Gestione delle impostazioni.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

  • Visual Studio 2010.

Creazione del controllo personalizzato

Il primo passaggio consiste nella creazione del progetto per il controllo personalizzato WPF.

Per creare il controllo personalizzato

  1. In Visual Basic o Visual C# creare un nuovo progetto di libreria di controlli personalizzati WPF denominato TailspinToysControlLibrary.

    Il codice per CustomControl1 verrà aperto nell'editor di codice.

    Nota

    Se l'esperienza di progettazione personalizzata è destinata solo a Expression Blend 4 e Visual Studio 2010, impostare il framework di destinazione del progetto su .NET Framework 4. Se l'esperienza di progettazione personalizzata è destinata a Expression Blend 3, Expression Blend 4 e Visual Studio 2010, impostare il framework di destinazione del progetto su .NET Framework 3.5.

  2. In Esplora soluzioni modificare il nome del file di codice in TailspinToysControl.cs o TailspinToysControl.vb. Se viene visualizzata una finestra di messaggio in cui si richiede se eseguire un'operazione di ridenominazione per tutti i riferimenti del progetto, fare clic su .

  3. Aprire le proprietà del progetto e selezionare la scheda Compila (Compila per Visual Basic).

  4. Impostare il percorso di output del progetto su "bin\".

  5. Compilare la soluzione.

Creazione dell'assembly di metadati Design-Time

Il codice Design-Time viene distribuito in speciali assembly di metadati. Per questa procedura dettagliata, i metadati personalizzati sono supportati da Visual Studio e da Expression Blend e sono distribuiti in un assembly denominato TailspinToysControlLibrary.Design. Per ulteriori informazioni sulla denominazione degli assembly, vedere Distribuzione di un controllo personalizzato e di assembly della fase di progettazione.

Per creare l'assembly di metadati Design-Time

  1. In Visual Basic o Visual C# aggiungere un nuovo progetto Libreria di classi denominato TailspinToysControlLibrary.Design alla soluzione.

  2. Impostare il percorso di output del progetto su ".. \TailspinToysControlLibrary\bin\". In questo modo l'assembly del controllo e l'assembly dei metadati verranno mantenuti nella stessa cartella, consentendo l'individuazione di metadati per le finestre di progettazione.

  3. Aggiungere riferimenti agli assembly WPF e XAML riportati di seguito.

    • PresentationCore

    • PresentationFramework

    • System.Xaml

    • WindowsBase

  4. Aggiungere riferimenti agli assembly WPF Designer riportati di seguito. 

    • Microsoft.Windows.Design.Extensibility

    • Microsoft.Windows.Design.Interaction

    Nota

    Se si dispone di Expression Blend installato, è possibile vedere due set degli assembly WPF Designer nella finestra di dialogo Aggiungi riferimenti. Selezionare i due assembly installati con Visual Studio situati nella cartella $(VSInstallDir)\Common7\IDE\PublicAssemblies.

    Nota

    Se gli assembly WPF Designer non vengono visualizzati nella finestra di dialogo Aggiungi riferimenti. Fare clic sulla scheda Sfoglia e passare agli assembly nella cartella $(VSInstallDir)\Common7\IDE\PublicAssemblies.

  5. Aggiungere un riferimento al progetto TailspinToysControlLibrary.

  6. In Esplora soluzioni modificare il nome del file di codice Class1 in RegisterMetadata.cs o RegisterMetadata.vb.

  7. Sostituire il codice generato automaticamente con il codice seguente. Con questo codice viene creato un oggetto AttributeTable che associa gli attributi della fase di progettazione personalizzati alla classe TailspinToysControl.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Microsoft.Windows.Design;
    using Microsoft.Windows.Design.Features;
    using Microsoft.Windows.Design.Metadata;
    
    using TailspinToysControlLibrary;
    
    // The ProvideMetadata assembly-level attribute indicates to designers
    // that this assembly contains a class that provides an attribute table. 
    [assembly: ProvideMetadata(typeof(TailspinToysControlLibrary.Design.RegisterMetadata))]
    namespace TailspinToysControlLibrary.Design
    {
        internal class RegisterMetadata : IProvideAttributeTable
        {
            // Called by the designer to register any design-time metadata. 
            public AttributeTable AttributeTable
            {
                get
                {
                    AttributeTableBuilder builder = new AttributeTableBuilder();
    
                    // Set ToolboxBrowsableAttribute to true to display your custom control 
                    // in the Toolbox and in the Choose Items... dialog box. 
                    builder.AddCustomAttributes(typeof(TailspinToysControl), new ToolboxBrowsableAttribute(true));
    
                    return builder.CreateTable();
                }
            }
        }
    }
    
  8. Compilare la soluzione.

Passaggi successivi

Vedere anche

Attività

Procedura dettagliata: creazione di un'icona della casella degli strumenti personalizzata per un controllo

Riferimenti

AttributeTable

Scheda Componenti WPF, finestra di dialogo Scegli elementi della Casella degli strumenti

Altre risorse

Procedura dettagliata: aggiunta di metadati alle icone della casella degli strumenti

Icone della casella degli strumenti

Distribuzione di un controllo personalizzato e di assembly della fase di progettazione

Aggiunta di metadati della fase di progettazione