【发布时间】:2012-12-22 05:47:06
【问题描述】:
单击Button 时,我试图隐藏Grid 的前两列。我的Grid 布局有 3 列,一列带有网格,第二列带有网格拆分器,第三列带有另一列 Grid,其中 Button。
当我使用下面的代码运行我的程序时,它会按预期正确折叠Button 的前两列并调整第三个网格的大小,但是当我使用拆分器调整网格大小时,这不起作用了。它隐藏了列,但是第三列没有调整大小以填充Window。我希望前 2 列折叠起来,第三列填满窗口的整个区域(如果我不使用拆分器调整大小,就会发生这种情况)。
xaml 如下:
<Grid>
<ColumnDefinition Width="Auto" x:Name="column1"/>
<ColumnDefinition Width="Auto" x:Name="column2"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" x:Name="left" MinWidth="100">
<Border Background="Red" Margin="5"/>
<TextBlock Text="A Brown fox jumped oversomething" Width="{Binding ActualWidth, ElementName=TreeView}" Margin="5"></TextBlock>
</Grid>
<GridSplitter x:Name="splitter"
Width="5"
Grid.Column="1"
HorizontalAlignment="Left"
Margin="0,5,0,5"
Panel.ZIndex="1"
VerticalAlignment="Stretch"
ResizeDirection="Columns"/>
<Grid Grid.Column="2">
<Grid Grid.Column="0" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="Green" Margin="5"/>
<Button Grid.Row="1" Click="OnClick">HideAndResize</Button>
</Grid>
</Grid>
</Grid>
Button.click 事件处理如下:
private bool clicked;
private void OnClick(object sender, RoutedEventArgs e)
{
clicked = !clicked;
left.Visibility = clicked ? Visibility.Collapsed : Visibility.Visible;
splitter.Visibility = clicked ? Visibility.Collapsed : Visibility.Visible;
}
【问题讨论】:
标签: wpf button grid gridsplitter