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.

Um aplicativo redimensionável

ObservaçãoObservaçã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

  1. 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çãoObservaçã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.

  2. 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

  1. In Design view, select the Grid. For more information, see Como: Selecionar e mover elementos na superfície de design.

  2. In the Properties window, locate the RowDefinitions property, and click the ellipsis button in the property value column.

    The Collection Editor appears.

  3. Click Add three times to add three rows.

  4. Set the Height property of the second row to Auto.

  5. Set the MinHeight property of the third row to 70.

  6. 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.

  7. On the File menu, click Save All.

Adding a Horizontal GridSplitter

Next you add the GridSplitter.

To add a horizontal GridSplitter

  1. In Design view, select the Grid.

  2. From the Toolbox, drag a GridSplitter control onto the Grid.

  3. 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

  4. 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

  1. In Design view, select the Grid.

  2. From the Toolbox, drag a DockPanel control onto the Grid.

  3. 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

  4. From the Toolbox, drag a Label control onto the DockPanel.

  5. 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

  6. 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.

  7. From the Toolbox, drag a RichTextBox control onto the DockPanel.

  8. 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)

  9. 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

  1. In Design view, select the Grid.

  2. From the Toolbox, drag a Grid control onto the Grid.

  3. 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

  4. In the Properties window, locate the ColumnDefinitions property, and click the ellipsis button in the property value column.

    The Collection Editor appears.

  5. Click Add two times to add two columns.

  6. Set the Width property of the second column to Auto.

  7. Click OK to close the Collection Editor and return to the WPF Designer.

  8. From the Toolbox, drag a Button control onto the Grid.

  9. 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

  10. From the Toolbox, drag a RichTextBox control onto the Grid.

  11. 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)

  12. On the File menu, click Save All.

Testing the Application

The final procedure is to test the application.

To test the application

  1. On the Debug menu, click Start Debugging.

    O aplicativo é iniciado e MainWindow aparece.

  2. Resize the window both vertically and horizontally.

    The top and bottom halves of the application expand and contract to use the available space.

  3. Drag the splitter to resize the parts of the application. Make one part of the application small compared to the other.

  4. Resize the window again.

    The top and bottom halves of the application expand and contract proportionally based on the location of the splitter.

  5. 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.

  6. 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çãoObservação

70 = 60 (the height of the button) + 5 (the top margin of the button) + 5 (the bottom margin of the button)

  1. 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

Outros recursos

Walkthroughs de layout