Cristian
Cristian

Reputation: 301

How to accommodate GroupBox in WPF?

I have a "GroupBox" which to maximize the window I subrepone to others "GroupBox"

No way to fix it. Anyone? Form

This is the XAML. This is the xml do not know if there is way to add some definition to fix, any label or something.

<UserControl x:Class="Laboratorio.Calibracion"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         mc:Ignorable="d" 
         d:DesignHeight="490" d:DesignWidth="660">
<Grid>
    <GroupBox Header="Calibracion" Margin="0,0,0,10">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <GroupBox Grid.Row="0" Grid.Column="0" Header="Equipo">
                <Grid>
                    <Label x:Name="serialLbl" Content="Serial:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"/>
                    <TextBox x:Name="serialTxb" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="85,10,0,0"/>
                    <TextBox x:Name="descripcionTxb" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="144" Margin="209,10,0,0" IsEnabled="False"/>
                    <Label x:Name="resolucionLbl" Content="Resolucion:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,41,0,0"/>
                    <TextBox x:Name="resolucionTxb" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="85,41,0,0"/>
                </Grid>
            </GroupBox>
            <GroupBox Grid.Row="0" Grid.Column="1" Header="Patron">
                <Grid>
                    <Label x:Name="patronLbl" Content="Patron:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"/>
                    <ComboBox x:Name="comboBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="106,10,0,0"/>
                    <Label x:Name="patronLbl_Copy" Content="Niv. Referencia:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,80,0,0"/>
                    <TextBox x:Name="resolucionTxb_Copy" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="106,80,0,0"/>
                    <Label x:Name="patronLbl_Copy1" Content="Fluido:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,41,0,0"/>
                    <ComboBox x:Name="comboBox_Copy" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="106,41,0,0"/>
                </Grid>
            </GroupBox>
            <GroupBox Grid.Row="1" Grid.Column="0" Header="Condificones">
                <Grid>
                    <Label x:Name="temperaturaLbl" Content="Temperatura:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"/>
                    <TextBox x:Name="temperaturaTxb" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="36" Margin="94,10,0,0"/>
                    <Label x:Name="humedadLbl" Content="Humedad:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="135,10,0,0"/>
                    <TextBox x:Name="humedadTxb" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="35" Margin="205,10,0,0"/>
                </Grid>
            </GroupBox>
            <GroupBox Grid.Row="2" Grid.Column="0" Header="Comprobacion Inicial">
                <Grid>
                    <DataGrid x:Name="compInicialDgv">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Presion Patron"></DataGridTextColumn>
                            <DataGridTextColumn Header="Lecturas"></DataGridTextColumn>
                            <DataGridTextColumn Header="Error"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </GroupBox>
            <GroupBox Grid.Row="2" Grid.Column="1" Header="Segunda Secuencia">
                <Grid>
                    <DataGrid x:Name="segSecDgv">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Presion Patron"></DataGridTextColumn>
                            <DataGridTextColumn Header="Lecturas"></DataGridTextColumn>
                            <DataGridTextColumn Header="Error"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </GroupBox>
        </Grid>
    </GroupBox>
</Grid>

Upvotes: 0

Views: 5754

Answers (1)

Chris Fannin
Chris Fannin

Reputation: 1294

You are using hardcoded size attributes (Margin, Width, Height, etc). I assume you designed it with drag-and-drop from the toolbox. You can get strange results when resizing the form with such hardcoded values.

I would recommend you change all of them to get rid of the hardcoded margins, edit the parent Grid to use RowDefinitions and ColumnDefinitions with appropriate sizing information (absolutes, Auto, *), set the Grid.Row Grid.Column Grid.ColumnSpan and Grid.RowSpan properties of the GroupBox controls, and then tweak the various sizing details (Margin, Padding, MinWidth, MinHeight, etc) as needed.

Do the same thing for any child Grid elements. You may also want to use other container elements.

Here is a slimmed-down example of what I'm talking about.

<Grid>
    <GroupBox Header="Calibracion" Margin="0,0,0,10">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="5*" /> <!-- Or '*', 'Auto', etc -->
                <ColumnDefinition Width="5*" /> <!-- Or '*', 'Auto', etc -->
            </Grid.ColumnDefinitions>
            <GroupBox Header="Equipo" Grid.Column="0" Grid.Row="0">
                <!-- GroupBox contents here -->
            </GroupBox>
            <GroupBox Header="Patron" Grid.Column="1" Grid.Row="0">
                <!-- GroupBox contents here -->
            </GroupBox>
            <GroupBox Header="Condificones" Grid.Column="0" Grid.Row="1">
                <!-- GroupBox contents here -->
            </GroupBox>
        </Grid>
    </GroupBox>
</Grid>

Upvotes: 1

Related Questions