Compartir a través de


Tutorial: Proporcionar metadatos personalizados en tiempo de diseño

WPF Designer for Visual Studio permite proporcionar metadatos personalizados en tiempo de diseño para distintos diseñadores. Por ejemplo, puede destinar distintas experiencias de diseño a los controles personalizados en Visual Studio y Expression Blend. Para registrar los metadatos personalizados en tiempo de diseño con el diseñador, implemente la interfaz IProvideAttributeTable y llame a uno de los métodos AddCustomAttributes.

En este tutorial se muestra cómo proporcionar implementaciones personalizadas en tiempo de diseño para una biblioteca de controles personalizados de WPF o Silverlight. En este tutorial realizará las siguientes tareas:

  • Crear un proyecto de biblioteca de controles personalizados de WPF.

  • Crear un ensamblado independiente para los metadatos en tiempo de diseño.

Cuando haya terminado, sabrá cómo proporcionar metadatos personalizados en tiempo de diseño para un control personalizado de WPF o Silverlight.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Trabajar con valores de configuración.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

  • Visual Studio 2010.

Crear el control personalizado

El primer paso consiste en crear el proyecto para el control personalizado de WPF.

Para crear el control personalizado

  1. Cree un nuevo proyecto de biblioteca de controles personalizados de WPF en Visual Basic o Visual C# denominado TailspinToysControlLibrary.

    El código de CustomControl1 se abre en el editor de código.

    Nota

    Si la experiencia de diseño personalizada solo se va a destinar a Expression Blend 4 y Visual Studio 2010, establezca la versión de .NET Framework de destino del proyecto en .NET Framework 4. Si la experiencia de diseño personalizada debe destinarse a Expression Blend 3, Expression Blend 4 y Visual Studio 2010, establezca la versión de .NET Framework de destino del proyecto en .NET Framework 3.5.

  2. En el Explorador de soluciones, cambie el nombre del archivo de código a TailspinToysControl.cs o TailspinToysControl.vb. Si se muestra un cuadro de mensaje que le pregunta si desea cambiar el nombre de todas las referencias de este proyecto, haga clic en .

  3. Abra las propiedades del proyecto y seleccione la pestaña Generar (Compilar para Visual Basic).

  4. Establezca la ruta de acceso de salida del proyecto en "bin\".

  5. Compile la solución.

Crear el ensamblado de metadatos en tiempo de diseño

El código en tiempo de diseño se implementa en ensamblados de metadatos especiales. Para este tutorial, los metadatos personalizados son compatibles con Visual Studio y Expression Blend y se implementan en un ensamblado denominado TailspinToysControlLibrary.Design. Para obtener más información sobre la forma de asignar nombres a los ensamblados, vea Implementar un control personalizado y ensamblados en tiempo de diseño.

Para crear el ensamblado de metadatos en tiempo de diseño

  1. Agregue un nuevo proyecto de biblioteca de clases en Visual Basic o Visual C# denominado TailspinToysControlLibrary.Design a la solución.

  2. Establezca la ruta de acceso de salida del proyecto en ".. \TailspinToysControlLibrary\bin\". De este modo, el ensamblado del control y el ensamblado de metadatos permanecen en la misma carpeta, lo que permite que los diseñadores detecten los metadatos.

  3. Agregue referencias a los siguientes ensamblados de WPF y XAML.

    • PresentationCore

    • PresentationFramework

    • System.Xaml

    • WindowsBase

  4. Agregue referencias a los siguientes ensamblados de WPF Designer. 

    • Microsoft.Windows.Design.Extensibility

    • Microsoft.Windows.Design.Interaction

    Nota

    Si tiene instalado Expression Blend, puede ver dos conjuntos de ensamblados de WPF Designer en el cuadro de diálogo Agregar referencias. Seleccione los dos ensamblados que se instalan con Visual Studio, ubicados en la carpeta $(VSInstallDir)\Common7\IDE\PublicAssemblies.

    Nota

    Si los ensamblados de WPF Designer no aparecen en el cuadro de diálogo Agregar referencias. Haga clic en la pestaña Examinar y navegue a los ensamblados en la carpeta $(VSInstallDir)\Common7\IDE\PublicAssemblies.

  5. Agregue una referencia al proyecto TailspinToysControlLibrary.

  6. En el Explorador de soluciones, cambie el nombre del archivo de código Class1 a RegisterMetadata.cs o RegisterMetadata.vb.

  7. Reemplace el código generado automáticamente por el código siguiente. Este código crea un objeto AttributeTable que asocia los atributos personalizados en tiempo de diseño a la clase 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. Compile la solución.

Pasos siguientes

Vea también

Tareas

Tutorial: Crear un icono de cuadro de herramientas personalizado para un control

Referencia

AttributeTable

Componentes WPF (Pestaña), Elegir elementos del cuadro de herramientas (Cuadro de diálogo)

Otros recursos

Tutorial: Proporcionar metadatos para los iconos del cuadro de herramientas

Iconos del cuadro de herramientas

Implementar un control personalizado y ensamblados en tiempo de diseño

Proporcionar metadatos en tiempo de diseño