WPF网格 - 当内容可见性设置为Visibility.Collapsed时,自动调整大小的列不会折叠

Stu*_*ows 9 wpf grid visibility

我有以下简单的WPf网格,两列,每列中的一个按钮,第一列自动调整大小以及允许列调整大小的拆分器.在拆分器MouseDoubleclick事件上设置事件处理程序.单击分割器时,左列中的按钮将折叠.

现在,由于第1列是自动调整大小并且内容已折叠,我希望此时第1列应该被有效隐藏,但事实并非如此.虽然其内容已折叠,但列大小不会更改(记住列已自动调整).

对我来说似乎很奇怪,我希望专栏崩溃 - 任何想法在这里发生了什么?

<Window x:Class="KingLayout.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Button x:Name="leftButton">Left</Button>
        <Button Grid.Column="1" Margin="5,0,0,0">Right</Button>
        <GridSplitter Name="verticalSplitter" ShowsPreview="True" Grid.RowSpan="1" Grid.Column="1" HorizontalAlignment="Left"
                      VerticalAlignment="Stretch" Width="5" MouseDoubleClick="verticalSplitter_MouseDoubleClick"/>
    </Grid>
</Window>


    private void verticalSplitter_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        leftButton.Visibility = leftButton.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
    }
Run Code Online (Sandbox Code Playgroud)

esy*_*tre 8

发生的事情是,当您使用GridSplitter调整列/行宽度/高度时,它会设置列/行的ActualHeight(或ActualWidth).

当控件折叠时,您应该使用触发器将行的高度设置为自动(或零).

让我更新这个.