Walkthrough: Criando um aplicativo redimensionável usando o WPF Designer
You can use the GridSplitter control in conjunction with the Grid container control to create window layouts that are resizable by the user at run time. For example, in an application that has a UI divided into areas, the user can drag a splitter to make an area larger, depending on what the user wants to see more of. In this walkthrough, you create the layout for a messenger-style application.
In this walkthrough, you perform the following tasks:
Create a WPF application.
Configure the default grid panel.
Add a horizontal GridSplitter.
Add a dock panel and controls.
Add a grid panel and controls.
Testar o aplicativo.
The following illustration shows how your application will appear.
Observação |
---|
Caixas de diálogo e comandos de menu que você vê podem diferir das descritas na Help dependendo das suas configurações ativas ou edição. Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu. For more information, see Trabalhando com configurações. |
Pré-requisitos
You need the following components to complete this walkthrough:
- Visual Studio 2010
Creating the Project
The first procedure is to create the project for the application.
To create the project
Create a new WPF Application project in Visual Basic or Visual C# named ResizableApplication. For more information, see Como: Criar um novo projeto de aplicativo WPF.
Observação You will not write any code in this walkthrough. The language that you choose for your project is the language that is used for the code-behind pages in your application.
MainWindow. XAML é aberto no WPF Designer.
On the File menu, click Save All.
Configuring the Default Grid Panel Control
By default, the new WPF application contains a Window with a Grid panel. To follow best practices, you dedicate this Grid to the GridSplitter. The plan for the grid is as follows:
Linha 1: A Dock o painel para a primeira parte do layout.
Linha 2: A GridSplitter.
Linha 3: A Grid o painel para o resto do layout.
To configure the default grid panel control
In Design view, select the Grid. For more information, see Como: Selecionar e mover elementos na superfície de design.
In the Properties window, locate the RowDefinitions property, and click the ellipsis button in the property value column.
The Collection Editor appears.
Click Add three times to add three rows.
Set the Height property of the second row to Auto.
Set the MinHeight property of the third row to 70.
Click OK to close the Collection Editor and return to the WPF Designer.
Now there are three rows in the grid, but only two rows appear. The row whose Height property is set to Auto is temporarily hidden because it does not have any content. For this walkthrough, that is fine. To avoid this in the future, you can use star sizing while you work, and change to Auto when you are done.
On the File menu, click Save All.
Adding a Horizontal GridSplitter
Next you add the GridSplitter.
To add a horizontal GridSplitter
In Design view, select the Grid.
From the Toolbox, drag a GridSplitter control onto the Grid.
In the Properties window, set the following properties for the GridSplitter:
Property
Value
ResizeDirection
Rows
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
1
Grid.RowSpan
1
Width
Auto
Height
10
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
On the File menu, click Save All.
Adding a Dock Panel and Controls
Next you add a DockPanel and set up the layout of the top half of the application. The DockPanel contains a Label and a RichTextBox. You set the color of the Label and the RichTextBox to highlight the size of the top half of the application when you move the GridSplitter.
To add a dock panel and controls
In Design view, select the Grid.
In the Properties window, set the following properties for the DockPanel:
Property
Value
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
0
Grid.RowSpan
1
LastChildFill
True (Checked)
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
In the Properties window, set the following properties for the Label:
Property
Value
Background
Blue (#FF0000FF)
Foreground
White (#FFFFFFFF)
Content
Display
DockPanel.Dock
Top
Width
Auto
Height
23
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
In Design view, select the DockPanel.
Dica
Because there are multiple controls covering the grid, you can use the TAB key, the Document Outline window, or XAML view to more easily select the DockPanel. For more information, see Como: Selecionar e mover elementos na superfície de design.
From the Toolbox, drag a RichTextBox control onto the DockPanel.
In the Properties window, set the following properties for the RichTextBox:
Property
Value
Background
LightBlue (#FFADD8E6)
DockPanel.Dock
Bottom
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
IsReadOnly
True (Checked)
On the File menu, click Save All.
Adding a Grid Panel and Controls
Next you add a Grid and set up the layout of the bottom half of the application. The Grid contains a Button and a RichTextBox. You set the color of the RichTextBox to highlight the size of the bottom half of the application when you move the GridSplitter.
To add a grid panel and controls
In Design view, select the Grid.
In the Properties window, set the following properties for the new Grid:
Property
Value
Grid.Column
0
Grid.ColumnSpan
1
Grid.Row
2
Grid.RowSpan
1
Width
Auto
Height
Auto
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
In the Properties window, locate the ColumnDefinitions property, and click the ellipsis button in the property value column.
The Collection Editor appears.
Click Add two times to add two columns.
Set the Width property of the second column to Auto.
Click OK to close the Collection Editor and return to the WPF Designer.
In the Properties window, set the following properties for the Button:
Property
Value
Content
OK
Grid.Column
1
Grid.ColumnSpan
1
Grid.Row
0
Grid.RowSpan
1
Width
60
Height
60
HorizontalAlignment
Stretch
VerticalAlignment
Stretch
Margin
5
From the Toolbox, drag a RichTextBox control onto the Grid.
In the Properties window, set the following properties for the RichTextBox:
Property
Value
Background
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 (Unchecked)
On the File menu, click Save All.
Testing the Application
The final procedure is to test the application.
To test the application
On the Debug menu, click Start Debugging.
O aplicativo é iniciado e MainWindow aparece.
Resize the window both vertically and horizontally.
The top and bottom halves of the application expand and contract to use the available space.
Drag the splitter to resize the parts of the application. Make one part of the application small compared to the other.
Resize the window again.
The top and bottom halves of the application expand and contract proportionally based on the location of the splitter.
Drag the splitter as far to the top of the application as possible.
The top half of the application disappears and only the bottom half appears.
Drag the splitter as far to the bottom of the application as possible.
The bottom half of the application still appears. This is because you set the MinHeight property of the third row to 70.
Observação |
---|
70 = 60 (the height of the button) + 5 (the top margin of the button) + 5 (the bottom margin of the button) |
- Close the window.
Putting it all Together
Este é o arquivo de 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>
Próximas etapas
The application that you created in this walkthrough contained a horizontal splitter. You can experiment by creating the same application by using a vertical splitter instead.
The application that you created demonstrated layout techniques only. You can experiment by adding code to make the application functional. For example, you can add code to the button click event that copies text from the bottom text box to the top text box.
Consulte também
Tarefas
Como: criar aplicativos User-Resizable com GridSplitter
Conceitos
Layout com absoluto e dinâmica posicionamento