可调整大小的网格列

时间:2014-12-02 00:18:22

标签: c# wpf layout resize wpf-controls

我有4个面板一列一列地排列。每个面板都是固定的,除了第三个面板,它应该尽可能大。

我希望能够切换第1,第2和第4面板的可见性。

我尝试使用网格并切换不同的列:

<Grid Grid.Row="1" Name="ResizablePanels">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="40" Name="gridColTools"/>
        <ColumnDefinition Width="100" Name="gridColStamps"/>
        <ColumnDefinition Width="*" Name="gridColCanvas"/>
        <ColumnDefinition Width="256" Name="gridColPropertiesAndLayers"/>
    </Grid.ColumnDefinitions>
    ...
<Grid>

但这只是隐藏了面板而没有实际重新定位和调整第三个面板的大小。

我也尝试了一个包装纸,但我无法让它工作,因为第3面板的尺寸未知。

如何切换列的可见性并适当调整大小?

2 个答案:

答案 0 :(得分:2)

您需要设置可隐藏列的宽度&#34;自动&#34;,然后在每个网格列中包含的控件上设置宽度(40,100,256)。

现在您指定列始终采用一定的大小 - 如果将它们设置为“自动”,则第三列(宽度为*)将隐藏它们隐藏时提供的任何空间。

正如@Blam所说,你需要使用Visibility.Collapsed才能正常工作 - 隐藏在这里不会被删除,因为隐藏的控件仍占用空间。

答案 1 :(得分:1)

必须是30个字符

Visibility.Collapsed;