WPF拆分器可见性

WPF拆分器可见性,wpf,gridsplitter,Wpf,Gridsplitter,在上面的xaml中,我正在根据ViewModel中的某些条件设置第一个内容控件和拆分器的可见性。但如果在运行时调整拆分器的大小,则在最后一个内容控件之前会显示一些空白。当我将第一个内容控件和拆分器设置为崩溃时,我需要内容控件来占据整个不动产 感谢您的帮助。胡乱猜测:您将可见性设置为visibility.Hidden 这只会隐藏控件,但它们会保留其空间 如果将可见性设置为可见性。折叠应该可以解决问题。问题在于网格拆分器会弄乱列定义,一旦抓取它,第一列将不再是自动,而是一个具体的像素值。下面是一个例

在上面的xaml中,我正在根据ViewModel中的某些条件设置第一个内容控件和拆分器的可见性。但如果在运行时调整拆分器的大小,则在最后一个内容控件之前会显示一些空白。当我将第一个内容控件和拆分器设置为崩溃时,我需要内容控件来占据整个不动产


感谢您的帮助。

胡乱猜测:您将可见性设置为
visibility.Hidden

这只会隐藏控件,但它们会保留其空间


如果将可见性设置为
可见性。折叠
应该可以解决问题。

问题在于
网格拆分器
会弄乱
列定义
,一旦抓取它,第一列将不再是
自动
,而是一个具体的像素值。下面是一个例子,说明了这一点:

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

因此,如果希望它再次可折叠,则需要将
宽度
返回到
自动

@Arihant

1] 尝试
GridSplitter.HorizontalAlignment
作为
Stretch

2] 您的
GridSplitter.Background
是否足够敏感,可以显示拆分器

3]
Visibility=“{Binding NavigationPageVisibility}”
Binding工作正常吗?您是否在Visual Studio的
输出
窗口中看到此绑定的任何绑定错误

NavigationPageVisibility
是否属于类型
Visibility
,是否属于值
Visibility.Visibility

许多开发人员将此类
NavigationPageVisibility
属性声明为布尔属性。这使绑定失败

4] 尝试删除您的
Margin=“1,6,1,6”
。它有时会将拆分器从可见区域中移除


5] 您不应该有
Grid.Row=“1”
。拆分器必须始终位于
Row=“0”
,并具有
网格。RowSpan
最大值。我将我的设置为99。

否我已将可见性设置为Visibility.Collapsed。它第一次工作正常,但是,当我使用拆分器调整列的大小,然后再次打开窗口时,它会在第一列中显示一些空白..NavigationPageVisibility正确设置可见性。。。尝试了此处提到的其他步骤,但没有成功。。
<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>