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の条件に基づいて、最初のコンテンツコントロールとスプリッターの可視性を設定しています。しかし、実行中にスプリッターのサイズを変更すると、最後のコンテンツコントロールの前に空のスペースが表示されます。最初のコンテンツコントロールとスプリッターを折りたたみに設定したときに、コンテンツコントロールが完全な領域を占める必要がありますか?

ヘルプに感謝します。

4

3 に答える 3

2

問題は、それをGridSplitterつかむ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>

したがって、再び折りたたみ可能にしたい場合は、 を に戻す必要がありWidthますAuto

于 2011-10-27T23:48:30.400 に答える
1

@アリハント、

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

2]スプリッターを表示GridSplitter.Backgroundするのに十分賢明ですか?

3]Visibility="{Binding NavigationPageVisibility}"バインディングは機能していますか?Outputこのバインディングについて、Visual Studio のウィンドウにバインディング エラーが表示されますか?

NavigationPageVisibilityタイプVisibilityと値ですかVisibility.Visible?

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

4]あなたのを削除してみてくださいMargin="1,6,1,6"。スプリッターが可視領域から外れる場合があります。

5]あなたは持ってはいけませんGrid.Row="1"。スプリッターは常にオンでRow="0"Grid.RowSpan可能な限り最大にする必要があります。私は99に設定しました。

于 2011-10-28T07:54:47.687 に答える
0

大雑把な推測: 可視性をVisibility.Hidden

これはコントロールを非表示にするだけですが、スペースは保持されます。

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

于 2011-10-27T22:29:25.663 に答える