Tutorial: Crear una aplicación cuyo tamaño pueda ser modificado mediante WPF Designer
Puede utilizar el control GridSplitter junto con el control contenedor Grid para crear diseños de ventanas cuyo tamaño pueda ajustar el usuario en tiempo de ejecución. Por ejemplo, en una aplicación que tiene una interfaz dividida en áreas, el usuario puede arrastrar un divisor para agrandar el área que desee ver mejor. En este tutorial se crea el diseño para una aplicación como las de mensajería.
En este tutorial realizará las siguientes tareas:
Crear una aplicación de WPF.
Configurar el panel de cuadrícula predeterminado.
Agregar un GridSplitter horizontal.
Agregar un panel de acoplamiento y controles.
Agregar un panel de cuadrícula y controles.
Probar la aplicación.
En la ilustración siguiente se muestra la apariencia que tendrá la aplicación.
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 proyecto
El primer procedimiento es crear el proyecto para la aplicación.
Para crear el proyecto
Cree un nuevo proyecto de aplicación de WPF en Visual Basic o en Visual C# denominado ResizableApplication. Para obtener más información, vea Cómo: Crear un nuevo proyecto de aplicación de WPF.
Nota
En este tutorial, no escribirá ningún código. El lenguaje que elija para el proyecto será el lenguaje que se utilice para las páginas de código subyacente de la aplicación.
MainWindow.xaml se abrirá en WPF Designer.
En el menú Archivo, haga clic en Guardar todo.
Configurar el control de panel de cuadrícula predeterminado
De forma predeterminada, la nueva aplicación de WPF contiene un Window con un panel Grid. Para seguir los procedimientos recomendados, este control Grid se dedica al objeto GridSplitter. El plano de la cuadrícula es el siguiente:
Fila 1: un panel Dock para la primera parte del diseño.
Fila 2: un GridSplitter.
Fila 3: un panel Grid para el resto del diseño.
Para configurar el control de panel de cuadrícula predeterminado
En la Vista de diseño, seleccione Grid. Para obtener más información, vea Cómo: Seleccionar y mover elementos en la superficie de diseño.
En la ventana Propiedades, busque la propiedad RowDefinitions y haga clic en el botón de puntos suspensivos en la columna de valores de propiedad.
Aparecerá el Editor de colecciones.
Haga clic en Agregar tres veces para agregar tres filas.
Establezca la propiedad Height de la segunda fila en Auto.
Establezca la propiedad MinHeight de la tercera fila en 70.
Haga clic en Aceptar para cerrar el Editor de colecciones y volver a WPF Designer.
Ahora hay tres filas en la cuadrícula, pero sólo aparecen dos. La fila cuya propiedad Height está establecida en Auto se oculta temporalmente porque no tiene contenido. Para el propósito de este tutorial, esto está bien. Pero para evitarlo en el futuro, puede utilizar el ajuste del tamaño mediante asterisco mientras trabaja, y cambiar a Auto cuando haya terminado.
En el menú Archivo, haga clic en Guardar todo.
Agregar un objeto GridSplitter horizontal
A continuación, se agrega el objeto GridSplitter.
Para agregar un objeto GridSplitter horizontal
En la Vista de diseño, seleccione Grid.
Desde el Cuadro de herramientas, arrastre un control GridSplitter hasta Grid.
En la ventana Propiedades, establezca las siguientes propiedades de GridSplitter:
Propiedad
Valor
ResizeDirection
Filas
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
1
Grid.RowSpan
1
Width
Auto
Height
10
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
En el menú Archivo, haga clic en Guardar todo.
Agregar un panel de acoplamiento y controles
A continuación, se agrega un panel DockPanel y se configura el diseño de la mitad superior de la aplicación. DockPanel contiene un control Label y un control RichTextBox. Establezca el color de Label y de RichTextBox para resaltar el tamaño de la mitad superior de la aplicación cuando mueva el objeto GridSplitter.
Para agregar un panel de acoplamiento y controles
En la Vista de diseño, seleccione Grid.
Desde el Cuadro de herramientas, arrastre un control DockPanel hasta Grid.
En la ventana Propiedades, establezca las siguientes propiedades de DockPanel:
Propiedad
Valor
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
0
Grid.RowSpan
1
LastChildFill
True (activada)
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
En el Cuadro de herramientas, arrastre un control Label hasta DockPanel.
En la ventana Propiedades, establezca las siguientes propiedades de Label:
Propiedad
Valor
Información básica
Blue (#FF0000FF)
Foreground
White (#FFFFFFFF)
Content
Display
DockPanel.Dock
Top
Width
Auto
Height
23
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
En la Vista de diseño, seleccione DockPanel.
Sugerencia Dado que hay varios controles que cubren la cuadrícula, puede utilizar la tecla TAB, la ventana Esquema del documento o la vista XAML para seleccionar más fácilmente el DockPanel. Para obtener más información, vea Cómo: Seleccionar y mover elementos en la superficie de diseño.
Desde el Cuadro de herramientas, arrastre un control RichTextBox hasta DockPanel.
En la ventana Propiedades, establezca las siguientes propiedades de RichTextBox:
Propiedad
Valor
Información básica
LightBlue (#FFADD8E6)
DockPanel.Dock
Bottom
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
IsReadOnly
True (activada)
En el menú Archivo, haga clic en Guardar todo.
Agregar un panel de cuadrícula y controles
A continuación, se agrega una Grid y se configura el diseño de la mitad inferior de la aplicación. Grid contiene un control Button y un control RichTextBox. Establezca el color de RichTextBox para resaltar el tamaño de la mitad inferior de la aplicación cuando mueva el objeto GridSplitter.
Para agregar un panel de cuadrícula y controles
En la Vista de diseño, seleccione Grid.
Desde el Cuadro de herramientas, arrastre un control Grid hasta Grid.
En la ventana Propiedades, establezca las propiedades siguientes para la nueva Grid:
Propiedad
Valor
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
2
Grid.RowSpan
1
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
En la ventana Propiedades, busque la propiedad ColumnDefinitions y haga clic en el botón de puntos suspensivos en la columna de valores de propiedad.
Aparecerá el Editor de colecciones.
Haga clic en Agregar dos veces para agregar dos columnas.
Establezca la propiedad Width de la segunda columna en Auto.
Haga clic en Aceptar para cerrar el Editor de colecciones y volver a WPF Designer.
Desde el Cuadro de herramientas, arrastre un control Button hasta Grid.
En la ventana Propiedades, establezca las siguientes propiedades de Button:
Propiedad
Valor
Content
OK
Grid.Column
1
Grid.ColumnSpan
1
Grid.Row
0
Grid.RowSpan
1
Width
60
Height
60
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
5
En el Cuadro de herramientas, arrastre un control RichTextBox hasta Grid.
En la ventana Propiedades, establezca las siguientes propiedades de RichTextBox:
Propiedad
Valor
Información básica
PaleGoldenrod (#FFEEE8AA)
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
0
Grid.RowSpan
1
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
IsReadOnly
False (desactivada)
En el menú Archivo, haga clic en Guardar todo.
Probar la aplicación
El último procedimiento consiste en probar la aplicación.
Para probar la aplicación
En el menú Depurar, haga clic en Iniciar depuración.
La aplicación se iniciará y aparecerá MainWindow.
Cambie el tamaño de la ventana tanto vertical como horizontalmente.
Las mitades superior e inferior de la aplicación se expanden y contraen para utilizar el espacio disponible.
Arrastre el divisor para cambiar el tamaño de las partes de la aplicación. Reduzca mucho una parte de la aplicación.
Cambie de nuevo el tamaño de la ventana.
Las mitades superior e inferior de la aplicación se expanden y contraen proporcionalmente de acuerdo con la ubicación del divisor.
Arrastre el divisor tanto como pueda hacia la parte superior de la aplicación.
La mitad superior de la aplicación desaparece y se muestra la mitad inferior.
Arrastre el divisor tanto como pueda hacia la parte inferior de la aplicación.
La mitad inferior de la aplicación se sigue mostrando. Esto se debe a que estableció la propiedad MinHeight de la tercera fila en 70.
Nota
70 = 60 (el alto del botón) + 5 (el margen superior del botón) + 5 (el margen inferior del botón)
- Cierre la ventana.
Resultado final
A continuación se muestra el archivo MainWindow.xaml completo:
<Window x:Class="MainWindow"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition MinHeight="70" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Grid.RowSpan="1" HorizontalAlignment="Stretch" Margin="0" Name="DockPanel1">
<Label DockPanel.Dock="Top" Height="23" Width="Auto" Background="Blue" Foreground="White" Name="Label1">Display</Label>
<RichTextBox DockPanel.Dock="Bottom" Height="Auto" Width="Auto" Background="LightBlue" IsReadOnly="True" Name="RichTextBox1" />
</DockPanel>
<GridSplitter Grid.Row="1" Grid.RowSpan="1" ResizeDirection="Rows" Width="Auto" Height="10" HorizontalAlignment="Stretch" Margin="0" Name="GridSplitter1" />
<Grid Grid.Row="2" HorizontalAlignment="Stretch" Margin="0" Name="Grid1">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="1" HorizontalAlignment="Stretch" Margin="5" Width="60" Height="60" Name="Button1">OK</Button>
<RichTextBox Grid.Column="0" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Margin="0" Background="PaleGoldenrod" Name="RichTextBox2" />
</Grid>
</Grid>
</Window>
Pasos siguientes
La aplicación que creó en este tutorial contenía un divisor horizontal. Puede experimentar creando la misma aplicación pero con un divisor vertical.
La aplicación creada muestra únicamente técnicas de diseño. Puede experimentar agregando código que haga que la aplicación sea funcional. Por ejemplo, puede agregar código al evento clic de botón para que se copie el texto del cuadro de texto inferior en el cuadro de texto superior.
Vea también
Tareas
Cómo: Crear aplicaciones cuyo tamaño pueda ser modificado por el usuario con GridSplitter
Conceptos
Diseño con posición absoluta y dinámica