WPF:使用GridSplitter触发内容调整大小

时间:2009-06-06 11:14:18

标签: wpf expander gridsplitter

我正试图强制网格/扩展器重新评估它是否需要滚动条,因为它显示空虚。

我正在使用这种布局:

<Grid>
  <toolstrip /> <!-- fixed height row -->
  <Scrollviewer>  <!-- * height -->
    <Grid> <!-- all rows are 'Auto' height -->
      <Expander />
      <Expander> <!-- this one stretches far too high -->
        <WPF Toolkit: DataGrid />
      <Expander>
      <GridSplitter/>
      <Expander />
    <Grid>
  </Scrollviewer>
  <stackpanel />   <!-- fixed height row -->
<Grid>

初始化Window时,DataGrid(WPF Toolkit)绑定到属性。通过一些调查,我意识到当窗口初始化时,GridView中的列开始大约10像素宽,然后添加内容,然后根据XAML中的大小调整大小(全部使用星形宽度) - 例如:2 *)。这会导致网格调整到窗口显示时所需高度的大约6倍,然后它不会回弹,只能看到窗口底部的内容是滚动或移动GridSplitter回到它应该的位置并调整窗口大小。我没有在任何东西上设置VerticalAlignment属性。

到目前为止,我已经在问题扩展器和InvalidateArrange(),InvalidateScrollInfo(),InvalidateVisual()和UpdateLayout()上尝试了以下所有名为InvalidateArrange(),InvalidateVisual();, InvalidateMeasure()和UpdateLayout()的函数。在它上方的网格上但它不会缩回。

有什么方法可以强制它在DataGrid中强制列的宽度?

1 个答案:

答案 0 :(得分:0)

尝试在ScrollViewer上设置这些属性:

<ScrollViewer CanContentScroll="True"
              VerticalScrollBarVisibility="Auto" 
              HorizontalScrollBarVisibility="Auto">
    ... content ...
</ScrollViewer>

如果这不起作用,您能否提供更准确的XAML表示。另外,深入了解ScrollViewer可能有所帮助。