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>

因此,如果您希望它再次可折叠,则需要返回Widthto 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 回答