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
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.
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 Sí.
Abra las propiedades del proyecto y seleccione la pestaña Generar (Compilar para Visual Basic).
Establezca la ruta de acceso de salida del proyecto en "bin\".
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
Agregue un nuevo proyecto de biblioteca de clases en Visual Basic o Visual C# denominado TailspinToysControlLibrary.Design a la solución.
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.
Agregue referencias a los siguientes ensamblados de WPF y XAML.
PresentationCore
PresentationFramework
System.Xaml
WindowsBase
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.
Agregue una referencia al proyecto TailspinToysControlLibrary.
En el Explorador de soluciones, cambie el nombre del archivo de código Class1 a RegisterMetadata.cs o RegisterMetadata.vb.
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(); } } } }
Compile la solución.
Pasos siguientes
Este tutorial proporciona una solución que contiene la implementación básica para una experiencia de diseñador personalizada que funciona en Visual Studio y Expression Blend. Para ampliar esta solución, realice el siguiente tutorial.
Para registrar el control y los ensamblados en tiempo de diseño, use el procedimiento de registro de AssemblyFoldersEx. Para obtener más información, vea Implementar un control personalizado y ensamblados en tiempo de diseño.
Puede descargar implementaciones personalizadas en tiempo de diseño de ejemplo del sitio WPF Designer Extensibility Samples.
Vea también
Tareas
Tutorial: Crear un icono de cuadro de herramientas personalizado para un control
Referencia
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