2009-06-06 30 views
0

我試圖強制網格/擴展器重新評估它是否需要滾動條,因爲它顯示空白。WPF:使用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> 

當窗口被初始化的數據網格(WPF工具包)被綁定到一個屬性。通過一些調查,我意識到,當窗口初始化時,GridView中的列開始大約10像素寬,然後添加內容,然後根據XAML中的大小調整大小(全部使用星形寬度 - 例如:2 *)。這會導致網格調整到窗口顯示時所需的高度的6倍左右,然後它不會回彈,並且查看窗口底部的內容的唯一方法是滾動或移動GridSplitter備份到應該在的位置並調整窗口大小。我沒有對任何東西設置VerticalAlignment屬性。 (),InvalidateScrollInfo(),InvalidateVisual()和UpdateLayout()中的InvalidateArrange(),InvalidateVisual(),InvalidateMeasure()和UpdateLayout() )在它上面的Grid上,但它不會縮回。

有沒有什麼辦法可以強制它達到DataGrid中列的寬度?

+0

我不明白 - 你在談論datagrid列的寬度,但垂直滾動問題?網格內容是否會強制行高增長? – MarcE 2011-12-04 22:38:25

回答

0

試穿ScrollViewer中設置這些屬性:

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

如果不工作,你能提供你的XAML的更精確的表示。此外,深入瞭解ScrollViewer可能會有所幫助。