2009-06-06 73 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 Toolkitには)プロパティにバインドされています。いくつか調査したところ、ウィンドウが初期化されると、GridViewの列は約10ピクセル幅で開始され、コンテンツが追加され、次にXAMLのサイズに基づいてサイズが変更されることがわかりました - 例えば:2 *)。これは、ウィンドウが表示されているときに必要な高さの約6倍にグリッドをサイズ変更します。その後、元に戻りません。また、ウィンドウの下部にあるものを確認する唯一の方法は、GridSplitterをスクロールまたは移動することですウィンドウのサイズを変更してウィンドウのサイズを変更します。私は何でもVerticalAlignmentプロパティを設定していません。

問題のエクスパンダとInvalidateArrange()、InvalidateScrollInfo()、InvalidateVisual()、およびUpdateLayout()のInvalidateArrange、InvalidateVisual、InvalidateMeasureおよびUpdateLayoutは、 )上にあるグリッド上には表示されますが、元に戻ることはありません。

DataGridの列の幅を強制的に小さくする方法がありますか?

+0

私は理解できません - あなたはデータグリッド列の幅について話していますが、垂直スクロールの問題は何ですか?行の高さを強制的に増やすためにグリッドの内容を折り返していますか? – MarcE

答えて

0

はScrollViewerの上でこれらのプロパティを設定してみてください:

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

問題が解決しない場合、あなたはあなたのXAMLのより正確な表現を提供することができます。また、ScrollViewerを深く見てみると役に立ちます。

関連する問題