Как равномерно растянуть элементы в StackPanel?

159
22 ноября 2018, 21:10

В общем, есть такой StackPanel:

<StackPanel Orientation="Horizontal" Grid.Row="0"
            Grid.ColumnSpan="2" Grid.Column="0"
            HorizontalAlignment="Stretch">
    <TextBlock Text="Путь к БД" />
    <TextBox Text="{Binding PathToDb, UpdateSourceTrigger=PropertyChanged}"
             IsEnabled="False" />
    <Button Content="..." />
</StackPanel>

Он помещен внутрь Grid'a.

Проблема в том, что у меня не получается сделать так, что бы элементы равномерно заняли ячейку Grid'a.

Вот такая вот хрень получается:

Хотя хочу, что бы не было таких отсупов, ведь кнопка справа имеет константную ширину.

Answer 1

StackPanel работает по принципу: в направлении компоновки (в вашем случае оно горизонтальное) выделяем минимально необходимое пространство, в ортогональном ему направлении — всё доступное, поэтому ваша задача не решается с помощью StackPanel в принципе.

Используйте другую панель, например, Grid:

<Grid Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="Путь к БД" />
    <TextBox Grid.Column="1" Margin="5,0" IsEnabled="False"
             Text="{Binding PathToDb, UpdateSourceTrigger=PropertyChanged}" />
    <Button Grid.Column="2" Content="..." />
</Grid>

Либо DockPanel:

<DockPanel Grid.Row="0" Grid.ColumnSpan="2" Grid.Column="0">
    <TextBlock Text="Путь к БД" />
    <Button DockPanel.Dock="Right" Content="..." />
    <TextBox Margin="5,0" IsEnabled="False"
             Text="{Binding PathToDb, UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>
READ ALSO
&ldquo;Не отпускаются&rdquo; клавиши

“Не отпускаются” клавиши

Открываю блокнот, нажимаю клавишу пробел, срабатывает комбинация ctrl+s и после этого, такое ощущение, будто эти клавиши нажаты остаются навсегда...

156
Утечка памяти при работе с графикой

Утечка памяти при работе с графикой

В общем, есть окно, где есть комбобокс с десятками ссылок на картинку весом ~2 мб и разрешением 5037x3657

163
С# Как считать string из hex

С# Как считать string из hex

У меня есть файл в котором есть начало считывания строкового значения C1 00 00 00 (193 офсет) и кол-во строк 0F 00 00 00 (15), строки разделяются 0x00 + 8 левых...

214
Выдвигающиеся панели

Выдвигающиеся панели

Как на WPF можно реализовать выдвигающиеся панели

184