2011-10-27 14 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のいくつかの条件に基づいて1番目のコンテンツコントロールとスプリッタの可視性を設定しています。しかし、実行中にスプリッタのサイズを変更した場合、最後のコンテンツコントロールの前に空白が表示されます。私は完全な不動産を占有するコンテンツコントロールが必要です。最初のコンテンツコントロールとスプリッタを折りたたんで設定しますか?WPFスプリッタの可視性

ヘルプを評価してください。

答えて

2

問題はColumnDefinitionsと混乱します。最初の列を取得した後は、具体的なピクセル値ではなく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> 

だから、あなたはそれが再び折りたたみ可能になりたい場合は、AutoWidthを返却する必要があります。

+0

ColumnDefinitionの幅をAutoに設定しても問題は解決しません。 – Arihant

+0

私のために働いています... –

+0

ColumnDefinition幅の双方向バインドを設定することで修正されました。 – Arihant

0

ワイルド推測:あなたはVisibility.Hidden

に可視性を設定します。これはコントロールを隠しますが、彼らは自分のスペースを保持します。

可視性をVisibility.Collapsedに設定すると、問題が解決するはずです。

+0

私は可視性をVisibility.Collapsedに設定していません。しかし、初めてスプリッタを使用して列のサイズを変更した後、再びウィンドウを開くと、最初の列に空白が表示されます。 – Arihant

1

@Arihant、

1] StretchとしてGridSplitter.HorizontalAlignmentを試してみてください。

2] GridSplitter.Backgroundは、スプリッタに十分に感応していますか?

3] Visibility="{Binding NavigationPageVisibility}"バインディングは機能しますか?このバインディングのVisual StudioのOutputウィンドウにバインドエラーがありますか?

Visibilityの値Visibility.VisibleNavigationPageVisibilityですか?

多くの開発者は、このようなNavigationPageVisibilityプロパティをブール値として宣言します。それはバインディングに失敗します。

4] Margin="1,6,1,6"を削除してください。可視領域からスプリッタを外すことがあります。

5] は、Grid.Row="1"ではありません。スプリッタは常にRow="0"で、可能な限り最大値はGrid.RowSpanでなければなりません。私は99として私を設定しました。

+0

NavigationPageVisibilityがVisibilityを正しく設定しました。 – Arihant

関連する問題