我將兩個控件放在網格列中,並使第一個或第二個控件可見。由於網格列的寬度設置爲auto,因此它將根據可見子節點的寬度調整自身的大小......除非使用網格分隔符更改列的寬度。
現在,如果我切換子控件的可見性,該列不會再將其自身重新調整爲其內容。我如何建立原始行爲?網格不再調整大小
謝謝!
編輯:
列的寬度屬性綁定到被設置爲GridLength.Auto再次(學分馬丁莫澤)的屬性數據,但史努比告訴我,這將被忽略。所以(新)問題是我可以如何設置列的寬度回到自動。
編輯:
一個例子
- 啓動應用
- 使用複選框來切換紅色面板的能見度 第一列
- 調整大小的
- =>正確調整大小帶分離器的列
- 選中/取消選中複選框
- =>第一列的任何大小調整了
XAML:
<Window x:Class="WpfApplication1.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">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="CONV_KEY"></BooleanToVisibilityConverter>
</Window.Resources>
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<DockPanel Grid.Column="0" Width="100" Background="Red"
Visibility="{Binding ElementName=_checkBox,Path=IsChecked,Converter={StaticResource CONV_KEY}}">
</DockPanel>
<DockPanel Grid.Column="0" Width="10" Background="Green" HorizontalAlignment="Left"></DockPanel>
<GridSplitter Grid.Column="1" Width="10" ResizeBehavior="PreviousAndNext"></GridSplitter>
<CheckBox x:Name="_checkBox" Grid.Column="3" VerticalAlignment="Top">Toggle</CheckBox>
</Grid>
</Window>