1

WindowsFormsHost を持つフレームを含む Scrollviewer があります。WindowsFormsHost には DataGridView が含まれています (WPF DataGrid コントロールでこれを行わない理由を聞かないでください)。

スクロールビューアでスクロール中にDataGridViewが表示エラーを引き起こすため、スクロールビューアを無効にして、DataGridViewでスクロールを有効にしました。

    <Grid x:Name="LayoutRoot">
        <WindowsFormsHost HorizontalAlignment="Stretch" Name="_windowsFormsHostGrid" VerticalAlignment="Stretch">
            <Win.Grid:DataGridView x:Name="_buchungGrid" ScrollBars="Both" BorderStyle="None" BackgroundColor="#F7F8FA" CellFormatting="_gridBuchungen_CellFormatting" SelectionChanged="GridSelectionChanged" DoubleClick="_buchungInovaGrid_DoubleClick" AutoSize="True" AutoColumnWidthMode="Window" ZebraColor="LightGray" Anchor="Left" Dock="Fill" />
        </WindowsFormsHost>
    </Grid>

これはうまくいくようです。ウィンドウのサイズを変更しない限り。ウィンドウのサイズを変更すると (スクロールビューアー、フレーム、WindowsFormsHost を含むすべての子要素のサイズが変更されます)、DataGridView のスクロールバーが消え、グリッドをスクロールできなくなります。ウィンドウのサイズを元のサイズに変更できますが、スクロールバーはまだ非表示になっています。

なぜこれが起こるのか、それを修正する方法はありますか? また、1 ピクセルだけのサイズを変更していて、これが発生するため、それらが消える理由もわかりません。

4

2 に答える 2

0

この問題の解決策はないようです。最終的に WPF DataGrid を使用し、必要な機能によって拡張しました。

WinForms は常に他のすべての要素の一番上に描画されます。唯一の解決策は、スクロールを修正するためにウィンドウをラップするようですが、これは地獄のように醜いでしょう。

于 2012-03-12T15:45:45.223 に答える