Сетка не меняется после того, как дочерние элементы переключаются на свернутые или скрытые - PullRequest
0 голосов
/ 11 февраля 2020

У меня сетка с 4 кнопками. Все 4 кнопки видны при запуске моего приложения. После действий пользователя кнопки с 1 по 3 переключаются на свернутые / скрытые. Моя цель состоит в том, чтобы 3 кнопки больше не были видны, а четвертая кнопка «растекалась» по всей сетке (см. Последнее изображение в этом посте). К сожалению, мой код не работает так, как я хочу. : /

Это мой код прямо сейчас:

                <Grid Grid.Column="0">
                   <Grid.RowDefinitions>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                   </Grid.RowDefinitions>
                   <Button Name="btn_1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
                   <Button Name="btn_2" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
                   <Button Name="btn_3" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
                   <Button Name="btn_4" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
                </Grid>

Это результат кода:

View with all 4 button on visible

Если я установил видимость кнопки 1 на 3 от видимого к скрытому или свернутому, вид будет следующим:

enter image description here

Какой результат у меня на самом деле ожидается следующее:

enter image description here

Я также пытался работать с док-панелью. К сожалению, также без успеха. Должен ли я работать с событиями или триггерами?

Я ценю любой совет. Заранее спасибо.

Правка - Решение:

Переключение высоты кнопки 1 на 3 с "*" на "auto" является решением.

                <Grid Grid.Column="0">
                   <Grid.RowDefinitions>
                      <RowDefinition Height="{Binding ControlRowDefinitionHeight}"/>
                      <RowDefinition Height="{Binding ControlRowDefinitionHeight}"/>
                      <RowDefinition Height="{Binding ControlRowDefinitionHeight}"/>
                      <RowDefinition Height="*"/>
                   </Grid.RowDefinitions>
                   <Button Name="btn_1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
                   <Button Name="btn_2" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
                   <Button Name="btn_3" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
                   <Button Name="btn_4" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
                </Grid>

Я установил привязку ControlRowDefinitionHeight (public GridLength ControlRowDefinitionHeight) в new GridLength(1, GridUnitType.Star) в моем коде, если все 4 кнопки видны. Если видна только четвертая кнопка, ControlRowDefinitionHeight имеет значение new GridLength(1, GridUnitType.Auto).

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Вы также должны изменить Height соответствующих RowDefinition s с * на Auto, в противном случае сетка продолжит равномерно распределять свои строки, как мы наблюдали.

0 голосов
/ 11 февраля 2020
        **Try it by adding MinHeight="anything you like"**    
            <Grid Grid.Column="0">
               <Grid.RowDefinitions>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
               </Grid.RowDefinitions>
               <Button Name="btn_1" Grid.Row="0" MinHeight="20"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
               <Button Name="btn_2" Grid.Row="1" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
               <Button Name="btn_3" Grid.Row="2" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
               <Button Name="btn_4" Grid.Row="3" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
            </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...