Visibility.Collapsed не возвращает свое пространство - PullRequest
0 голосов
/ 02 ноября 2011

Странная тема, поэтому позвольте мне объяснить: у меня есть главная страница Silverlight с элементом управления границей вверху страницы высотой 400. Как только пользователь прошел проверку подлинности, я перехожу на дочернюю страницу. Я также свернуть границу на главной странице. Дочерняя страница отображается правильно, но над ней находится пустое пространство 400, где был элемент управления границей MainPage до ее свертывания. Я думал, что Visibilty.Collapsed должен вернуть пространство, которое он занимает, но, похоже, он этого не делает. Я установил VerticalAlignment = 'Top' на объекте фрейма в MainPage, а также пробовал этот параметр на дочерней странице, но ни одна из них не работает.

У кого-нибудь есть предложения? Спасибо

Код обновлен:

 <ScrollViewer>
    <Grid x:Name="LayoutRoot"
          DataContext='{StaticResource ViewModel}'>
        <Grid.RowDefinitions>
            <RowDefinition Height='400'></RowDefinition>
            <RowDefinition Height='*'></RowDefinition>
        </Grid.RowDefinitions>

1 Ответ

1 голос
/ 02 ноября 2011

Вы можете решить эту проблему, обернув границу в сетке, а затем установив высоту RowDefinition, содержащей границу, равной Auto.Следующий тестовый пример работал для меня:

<Grid x:Name="MainGrid" Height="760" VerticalAlignment="Top" Background="Azure">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition x:Name="HeaderRow"  Height="Auto"></RowDefinition>
        <RowDefinition x:Name="TabRow" Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>

    <Border BorderThickness="1" Grid.Row="0" Background="Bisque" 
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch"
                        Name="HeaderBorder"
                        CornerRadius="10">
        <TextBlock>Test</TextBlock>
    </Border>
    <TextBlock Grid.Row="1">Test2</TextBlock>
    <Button Grid.Row="2" Content="Hide Border" Click="Button_Click"></Button>

</Grid>

И в коде позади:

private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
    HeaderBorder.Visibility = Visibility.Collapsed;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...