O WPF nos permite definir Grids em nosso formularios e criar linhas e colunas imaginarias onde nossos controles irão ficar. Vamos usar isso para criar a definição dessas linhas e após adicionarmos nossos controles nessas linhas e definirmos um tamanho. Algo como na figura abaixo.
Primeiro criamos um estilo para a nossa aplicação, onde devemos colocar o tamanho das colunas e linhas, e o tamanho dos componentes.
Como vocês pode ve
<Style TargetType="ColumnDefinition"> <Setter Property="MinWidth" Value="70" /> </Style> <Style TargetType="RowDefinition"> <Setter Property="Height" Value="50" /> </Style> <Style x:Key="LabelUm" TargetType="Label"> <Setter Property="Height" Value="23" /> <Setter Property="VerticalAlignment" Value="Top" /> </Style> <Style x:Key="LabelDois" TargetType="Label" BasedOn="{StaticResource LabelUm}"> <Setter Property="Grid.ColumnSpan" Value="2" /> </Style> <Style x:Key="LabelTres" TargetType="Label" BasedOn="{StaticResource LabelUm}"> <Setter Property="Grid.ColumnSpan" Value="3" /> </Style>
E agora o nosso formulário principal, onde chamamos os estilos e adicionamos eles aos labels, e textbox, desta forma eles vão se alinhando automaticamente. A idéia é igual a programação Web, criar um estilo e fazer o alinhamento apartir do estilo. Aqui vai o código do formulario principal.
<Window x:Class="MecanicaWPF.CadastroCliente" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:MecanicaWPF" Title="Cadastro de Clientes"> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="../EstilosFormulario.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Grid> <TabControl Margin="12,12,12,42" Name="tabControleCliente" Height="507"> <TabItem Name="tabCliente" Header="Dados do Cliente"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Grid.Row="0" Content="Nome do Cliente:" Style="{StaticResource LabelSeis}" /> <TextBox Grid.Row="0" Name="txtCliente" Style="{StaticResource TextBoxSeis}" /> <Label Grid.Row="0" Grid.Column="6" Content="CPF/CNPJ:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="0" Grid.Column="6" Name="txtCpfCnpj" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="1" Content="Tipo:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="1" Name="txtTipoPessoa" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="1" Grid.Column="2" Content="Enquadramento Cliente:" Style="{StaticResource LabelSeis}" /> <RadioButton Grid.Row="1" Grid.Column="2" Content="Cliente" Name="rdbCliente" Style="{StaticResource Dois}"/> <RadioButton Grid.Row="1" Grid.Column="4" Content="Fornecedor" Name="rdbFornecedor" Style="{StaticResource Dois}"/> <RadioButton Grid.Row="1" Grid.Column="6" Content="Ambos" Name="rdbAmbos" Style="{StaticResource Dois}"/> <Label Grid.Row="2" Content="RG/Inscricao:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="2" Name="txtRgInscricao" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="2" Grid.Column="2" Content="Telefone 1:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="2" Grid.Column="2" Name="txtTelefoneUm" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="2" Grid.Column="4" Content="Telefone 2:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="2" Grid.Column="4" Name="txtTelefoneDois" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="2" Grid.Column="6" Content="Cliente desde:" Style="{StaticResource LabelDois}" /> <TextBox Grid.Row="2" Grid.Column="6" Name="txtClienteDesde" Style="{StaticResource TextBoxDois}" /> <Label Grid.Row="3" Content="Email:" Style="{StaticResource LabelQuatro}" /> <TextBox Grid.Row="3" Name="txtEmail" Style="{StaticResource TextBoxQuatro}" /> <Label Grid.Row="3" Grid.Column="4" Content="Contato:" Style="{StaticResource LabelQuatro}" /> <TextBox Grid.Row="3" Grid.Column="4" Name="txtContato" Style="{StaticResource TextBoxQuatro}" /> <Label Grid.Row="4" Content="Observacao:" Style="{StaticResource LabelOito}" /> <TextBox Grid.Row="4" Grid.RowSpan="4" Name="txtObservacao" Style="{StaticResource TextBoxOito}" AcceptsReturn="True" AutoWordSelection="True" VerticalScrollBarVisibility="Auto" /> </Grid>
Como vocês podem ver, eu apenas adiciono aos controles a linha e o tamanho dele, um, dois, tres, etc. O código fica muito mais limpo, sem posições, ancoras, etc. Este exemplo é redimensionavel conforme a janela.
Nenhum comentário:
Postar um comentário