我在网格列中放置了两个控件,并使第一个或第二个控件可见。由于网格列的宽度设置为自动,它将根据可见子项的宽度自行调整大小...除非我使用网格分割器更改列的宽度。
现在,如果我切换子控件的可见性,该列不再调整其内容的大小。如何确定原始行为?
谢谢!
修改
列的width属性是绑定到属性的数据,该属性再次设置为GridLength.Auto(归功于Martin Moser),但Snoop告诉我这将被忽略。所以(新)问题是我如何将列的宽度设置回自动。
修改
一个例子
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>
答案 0 :(得分:1)
当你需要时,你是否尝试再次将columndefinition的宽度设置为GridLength.Auto?
答案 1 :(得分:0)
这是一个非常黑客,但是尝试将宽度设置为某个固定值,然后返回Auto,这应该触发更改,并且不应忽略该值,也许它正在工作...