0

空が表示されているため、グリッド/エキスパンダーにスクロールバーが必要かどうかを強制的に再評価させようとしています。

私はこのレイアウトを使用しています:

<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()、InvalidateVisual();、InvalidateMeasure() および UpdateLayout() と呼ばれる次のすべてを試し、グリッドで InvalidateArrange()、InvalidateScrollInfo()、InvalidateVisual() および UpdateLayout() を試しました。その上ですが、元に戻ることはありません。

DataGrid の列の幅を強制的に短くする方法はありますか?

4

1 に答える 1

0

ScrollViewerで次のプロパティを設定してみてください。

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

それが機能しない場合は、XAMLのより正確な表現を提供できますか。また、ScrollViewerを詳しく調べると役立つ場合があります。

于 2009-06-06T17:31:22.977 に答える