2011-11-02 49 views
0

奇怪的主題,所以讓我解釋一下:我有一個Silverlight MainPage,在頁面頂部有一個邊框控件,高度爲400.一旦用戶被認證,我導航到一個子頁面。我也摺疊了MainPage上的邊框。子頁面顯示正確,但是在MainPage邊框控件崩潰之前,它上面有一個空白400空間。我認爲Visibilty.Collapsed應該放棄它佔據的空間,但它似乎沒有做到這一點。我在MainPage中的框架對象上設置了VerticalAlignment ='Top',並在子頁面上嘗試了該設置,但都無效。Visibility.Collapsed沒有回報它的空間

任何人有任何建議嗎?由於

代碼更新時間:

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

顯示XAML中。可能有些東西可以忽略。 – SergioL

+0

好的 - 在MainPage上(部分xaml因爲回答時的字符限制) <導航:Frame.UriMapper> Greg

+0

你需要顯示周邊XAML中「頁面頂部的邊框控制」,因爲它可能包含它的網格具有固定尺寸的行。你能編輯原始問題嗎? –

回答

1

你應該能夠在網格包裹邊框上,然後設置包含邊界自動的RowDefinition的高度來解決這個問題。下面的測試例子爲我工作:

<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; 
}