Неожиданная ширина столбца автоматической сетки - PullRequest
0 голосов
/ 09 ноября 2018

приведенный ниже код является небольшим фрагментом большого окна wpf, которое я использую в своем проекте. Создает связанное окно wpf.

Мне интересно, почему мой последний столбец сетки такой широкий. Я ожидаю, что ширина последнего столбца зависит от ширины кнопки, потому что ширина столбца установлена ​​на «Авто». Если я удалю столбец StackPanel, ширина столбца будет правильной, но флажки не будут выровнены по правой стороне.

Надеюсь, вы поняли мою проблему. Моя цель состоит в том, чтобы последний столбец был как можно меньше, флажки расположены справа, а остальные остаются на нем.

Поскольку этот фрагмент является частью большего окна wpf, я не могу удалить строки или столбцы сетки.

Большое спасибо за вашу помощь.

С уважением.

Окно WPF

<Window x:Class="TestProject.Window1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         d:DesignHeight="152.429" d:DesignWidth="403">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <TextBox Grid.Column="0" 
             Grid.Row="0"
             Margin="5"
             Grid.ColumnSpan="2"/>

    <Button Grid.Column="2" 
            Grid.Row="0"
            Margin="5"
            Width="40"/>

    <ComboBox Grid.Column="0"
              Grid.Row="1"
              Margin="5"
              Grid.ColumnSpan="3"/>

    <Image Grid.Column="0"
           Grid.Row="2"/>

    <StackPanel Grid.Column="1"
                Grid.Row="2"
                Grid.ColumnSpan="2">

        <CheckBox Margin="5"
                  Content="checkbox content 1"/>

        <CheckBox Margin="5,0,5,5"
                  Content="checkbox content 2"/>
    </StackPanel>
</Grid>

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете поместить сетку в другую сетку.

Вот код, который поможет вам достичь вашей цели.

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <TextBox Grid.Column="0" 
             Grid.Row="0"
             Margin="5"
             Grid.ColumnSpan="2"/>

        <Button Grid.Column="2" 
            Grid.Row="0"
            Margin="5"
            Width="40"/>

        <ComboBox Grid.Column="0"
              Grid.Row="1"
              Margin="5"
              Grid.ColumnSpan="3"/>

        <Grid Name="GridInsideAGrid"
                Grid.Column="0"
                Grid.Row="2"
                Grid.ColumnSpan="3">

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <Image Grid.Column="0" />
            <StackPanel Grid.Column="1">
                <CheckBox Margin="5"
                  Content="checkbox content 1"/>

                <CheckBox Margin="5,0,5,5"
                  Content="checkbox content 2"/>
            </StackPanel>
        </Grid>
    </Grid>
...