<Grid Grid.Row="1" Visibility="Collapsed" Name="Main_Grid" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" MaxWidth="1000"/>
<ColumnDefinition Width="2" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<UserControl/>
</Grid>
<GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Left" Margin="0" ResizeDirection="Columns" ShowsPreview="False">
<Grid Grid.Column="2">
</Grid>
这是我的网格结构。
加载应用程序后,我设置UserControl的可见性Visible / Collapsed取决于DataContext。
FirstColumn首次根据需要获取宽度(因为ColumnDefination的Width属性定义为“Auto”)。
但是如果用户移动GridSplitter,之后如果我将新的Datacontext分配给用户控件或者点击UserControl中与GridSplitter不同的东西保留在用户离开的旧位置。
如何刷新它以便根据需要使用First GridColumn Take Width并且GridSplitter应该显示为附加到它。
答案 0 :(得分:1)
所以我理解,一旦用户手动更改了GridSplitter的位置,即使相邻Grid的大小发生变化,它也不会再自动调整其位置。在这种情况下,您可以通过从后面的代码再次设置它来恢复ColumnDefinition的Auto
设置。
this.Main_Grid.ColumnDefinitions[0].Width = GridLength.Auto;