Избегайте того, чтобы строка состояния WPF полностью сворачивалась при изменении размеров окна по вертикали до меньшего размера - PullRequest
0 голосов
/ 11 января 2019

У меня под окном WPF, которое содержит док-панель в качестве основного контейнера. Затем я помещаю основную сетку вверху (которая содержит некоторые другие сетки) и строку состояния внизу.

<Window>

  <DockPanel>
     <Grid DockPanel.Dock="Top">
         <!-- Grid stuff here -->
     </Grid>

     <StatusBar DockPanel.Dock="Bottom"                   
                VerticalAlignment="Bottom">

            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="100" />
                        </Grid.ColumnDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>
            <StatusBarItem Grid.Column="0">
                <TextBlock Text="Item1"/>
            </StatusBarItem>
            <Separator Grid.Column="1" />
            <StatusBarItem Grid.Column="2">
                <TextBlock />
            </StatusBarItem>
            <Separator Grid.Column="3" />
            <StatusBarItem Grid.Column="4">
                <TextBlock Text="AnotherItem" />
            </StatusBarItem>
  </DockPanel>

</Window>

У меня есть проблема ниже: Когда размер окна изменяется по вертикали до меньшего размера, наступает момент, когда высота строки состояния уменьшается и даже полностью сворачивается. Так как этого избежать? Я хочу, чтобы строка состояния никогда не сворачивалась и все время оставалась на высоте.

1 Ответ

0 голосов
/ 11 января 2019

Сетки внутри Сетки сейчас такие горячие.

<Window x:Class="GridRoot.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0">
            <Border BorderBrush="Black" BorderThickness="10" Background="CornflowerBlue">
                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
                    Hello!
                </TextBlock>
            </Border>
        </Grid>
        <StatusBar Grid.Row="1">
            <StatusBarItem>
                <TextBlock>
                    GET OFF ME!
                </TextBlock>
            </StatusBarItem>
        </StatusBar>
    </Grid>
</Window>

Верхний ряд занимает столько места, сколько доступно, а нижний - столько места, сколько нужно его содержимому. Поскольку элемент управления StatusBar в значительной степени имеет заданную высоту, он всегда будет виден снизу.

У некоторых людей могут возникнуть проблемы с размещением сетки внутри другой сетки, но нет абсолютно никаких причин не делать этого.

Пример выше, крошечный
Tiny version of the window

и зачаровано
Large version of the window

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...