2011-10-27 48 views
1
<Grid x:Name="LayoutRoot" Background="White"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <ContentControl Grid.Row="1" Grid.Column="0" Content="{Binding Path=CurrentNavigationView}" Visibility="{Binding NavigationPageVisibility}" Margin="2"/> 
    <GridSplitter Grid.Row="1" Grid.Column="1" Width="3" Margin="1,6,1,6" Visibility="{Binding NavigationPageVisibility}" HorizontalAlignment="Center" Background="{StaticResource NetApp_LightGray_Brush}" /> 
    <ContentControl Grid.Row="1" Grid.Column="2" Margin="2" Visibility="{Binding WelcomePageVisibility}" Content="{Binding Path=CurrentWelcomeView}" /> 
</Grid> 

在上面的xaml中,我設置了第一個內容控件和分割器的可見性,這是​​基於ViewModel中的一些條件。但是,如果我在運行時調整分隔線的大小,那麼在最後一個內容控件之前會顯示一些空白空間。當我將第一個內容控件和分離器設置爲摺疊狀態時,我需要內容控件佔據完整的不動產?WPF Splitter的可見性

欣賞幫助。

回答

2

問題是,GridSplitterColumnDefinitions混淆,一旦你抓住它,第一列將不再是Auto,而是一個具體的像素值。這裏是一個展示這樣一個例子:

<Grid Height="100"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Name="c0" Width="Auto"/> 
     <ColumnDefinition Name="c1" Width="Auto"/> 
     <ColumnDefinition Name="c2" Width="*"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0" Text="{Binding Width, ElementName=c0}"/> 
    <TextBlock Grid.Column="2" Text="{Binding Width, ElementName=c2}"/> 
    <GridSplitter Grid.Column="1" Width="5" ResizeBehavior="PreviousAndNext"/> 
</Grid> 

所以,如果你希望它是可摺疊再次需要返回到WidthAuto

+0

將ColumnDefinition寬度設置爲自動仍然不解決問題.. – Arihant

+0

適合我雖然... –

+0

通過設置ColumnDefinition寬度的雙向綁定來固定.. – Arihant

0

胡亂猜測:您設置的知名度Visibility.Hidden

這隻隱藏了控制,但他們保留自己的空間。

如果將可見性設置爲Visibility.Collapsed它應該可以解決您的問題。

+0

不,我已將可見性設置爲可見性。已崩潰。它第一次正常工作,但是,當我調整使用分離器的列的大小,然後再次打開窗口時,它顯示了第一列中的一些空白.. – Arihant

1

@Arihant,

1]嘗試GridSplitter.HorizontalAlignmentStretch

2]是您GridSplitter.Background理智地顯示分流?

3]是Visibility="{Binding NavigationPageVisibility}"綁定工作嗎?你看到你的Visual Studio的窗口上的綁定錯誤嗎?

NavigationPageVisibility類型Visibility和價值Visibility.Visible

許多開發者聲明這樣的NavigationPageVisibility屬性爲boolean。這沒有約束力。

4]嘗試刪除您的Margin="1,6,1,6"。它有時可能會將分離器從可見區域移開。

5]您不應該有Grid.Row="1"。分配器必須始終處於Row="0"並且儘可能最大爲Grid.RowSpan。我將它設置爲99.

+0

NavigationPageVisibility正確設置可見性...嘗試了其他步驟,但沒有運氣.. – Arihant