Tutorial: Aplicar estilos al contenido de Windows Presentation Foundation
Actualización: noviembre 2007
En este tutorial se explica cómo aplicar estilo a un control de Windows Presentation Foundation (WPF) hospedado en un formulario Windows Forms.
Realizará las tareas siguientes:
Crear el proyecto.
Crear el tipo de control de WPF.
Aplicar un estilo al control de WPF.
![]() |
---|
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, dependiendo de los valores de configuración o de edición activos. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, consulte Valores de configuración de Visual Studio. |
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
- Visual Studio 2008.
Creación del proyecto
El primer paso es crear el proyecto de formularios Windows Forms.
![]() |
---|
Cuando se hospeda contenido WPF, sólo se admiten proyectos de C# y Visual Basic. |
Para crear el proyecto
- Cree un nuevo proyecto de aplicación de formularios Windows Forms en Visual Basic o Visual C# denominado StylingWpfContent. Para obtener más información, consulte Cómo: Crear un proyecto de aplicación para Windows.
Crear los tipos de controles de WPF
Después de agregar un tipo de control de WPF al proyecto, puede hospedarlo en un control ElementHost.
Para crear tipos de controles de WPF
Agregue un nuevo objeto UserControl de WPF al proyecto. Use el nombre predeterminado para el tipo de control, UserControl1.xaml. Para obtener más información, consulte Tutorial: Crear nuevo contenido de Windows Presentation Foundation en formularios Windows Forms en tiempo de diseño.
En la vista Diseño, asegúrese de que UserControl1 está seleccionado. Para obtener más información, consulte Cómo: Seleccionar y mover elementos en la superficie de diseño.
En la ventana Propiedades, establezca el valor de las propiedades Width y Height en 200.
Agregue un control System.Windows.Controls.Button a UserControl y establezca el valor de la propiedad Content en Cancelar.
Agregue un segundo control System.Windows.Controls.Button a UserControl y establezca el valor de la propiedad Content en Aceptar.
Genere el proyecto.
Aplicar un estilo a un control de WPF
Puede aplicar estilos diferentes a un control de WPF para cambiar su aspecto y comportamiento.
Para aplicar un estilo a un control de WPF
Abra Form1 en el Diseñador de Windows Forms.
En el Cuadro de herramientas, haga doble clic en UserControl1 para crear una instancia de UserControl1 en el formulario.
Una instancia de UserControl1 se hospeda en un nuevo control ElementHost denominado elementHost1.
En el panel de etiquetas inteligentes de elementHost1, haga clic en Editar contenido hospedado en la lista desplegable.
UserControl1 se abre en el WPF Designer.
En la vista XAML, inserte el siguiente marcado XAML después de la etiqueta de apertura de <UserControl>.
Este marcado XAML crea un degradado con un borde de degradado que contraste. Al hacer clic en el control, los degradados cambian para producir el aspecto de un botón presionado. Para obtener más información, consulte Aplicar estilos y plantillas.
[xaml]
<UserControl.Resources>
<LinearGradientBrush x:Key="NormalBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#BBB" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="0.1"/>
<GradientStop Color="#EEE" Offset="0.9"/>
<GradientStop Color="#FFF" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="BorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#444" Offset="0.0"/>
<GradientStop Color="#888" Offset="1.0"/>
</LinearGradientBrush>
<Style x:Key="SimpleButton" TargetType="{x:Type Button}" BasedOn="{x:Null}">
<Setter Property="Background" Value="{StaticResource NormalBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource NormalBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="Grid">
<Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" Value="{StaticResource PressedBrush}" TargetName="Border"/>
<Setter Property="BorderBrush" Value="{StaticResource PressedBorderBrush}" TargetName="Border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
[xaml]
<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top"
Style="{StaticResource SimpleButton}">Cancel</Button>
Vea también
Conceptos
Información general sobre XAML