如果用户在控制加载内部列/行附加到GridSplitter之前更改它,如何在wpf c中更改gridspl的位置#

时间:2016-03-10 11:33:29

标签: c# wpf

 <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应该显示为附加到它。

1 个答案:

答案 0 :(得分:1)

所以我理解,一旦用户手动更改了GridSplitter的位置,即使相邻Grid的大小发生变化,它也不会再自动调整其位置。在这种情况下,您可以通过从后面的代码再次设置它来恢复ColumnDefinition的Auto设置。

this.Main_Grid.ColumnDefinitions[0].Width = GridLength.Auto;