1

私はDataGridSilverlightで作業しています。ウィンドウのすべてのサイズで垂直スクロールバーが表示されるように十分なアイテムがあり、ウィンドウのサイズを数回変更すると、垂直スクロールが同期しなくなります。親指は、コントロールがそれよりも多くのアイテムがあると考えているかのように小さくなります。親指を下または上にドラッグすると、コンテンツがジャンプし始めます。それはいつも起こり、非常に苛立たしいものです。は、ウィンドウの大きさに応じてサイズが変更さDataGridれた内に配置されています(特定のサイズはありません)DockPanel

誰かアイデアはありますか?

4

4 に答える 4

1

派生した で同様のアプローチを試みましたDataGrid

違いは、 はOnApplyTemplateのインスタンスのみを取得し、スクロール バーでVerticalScrollbarを呼び出すために別のパブリック メソッドが導入されたことです。UpdateLayout()このようなメソッドは、スクロール バーのサイズが同期しなくなる可能性がある状況 (DataGridコンテンツのサイズ変更など)で明示的に呼び出されます。

UpdateLayout()それだけでは不十分な場合もあったので、スクロール バーの表示を反転する機能を追加しました。

于 2011-11-29T17:37:17.617 に答える
1

同様の問題がいくつかあります。それらのほとんどは、データグリッドで UpdateLayout を呼び出すことで解決できます。

私もドックパネルにデータグリッドを持っています。下にスクロールして一番下のレコードを選択し、データグリッドをリロードすると、水平スクロールバーが最後のレコードをカバーしているように見えます。また、垂直スクロールバーは可能な限り下に表示され、それ以上下にドラッグできません。

マウスのスクロール ホイールを使用すると、最後のレコードを表示できます。

これは、最大化されたウィンドウでアプリケーションを表示した場合にのみ発生します。

これでどこかに行きましたか?

于 2010-08-16T10:28:15.960 に答える
0

これはデータグリッドのバグです。データグリッドから継承し、 OnApplyTemplate メソッドでスクロールバーを検索してレイアウトを手動で更新することで、これを解決できます。

public override void OnApplyTemplate()
{
    verticalScrollBar = this.GetTemplateChild("VerticalScrollbar") as ScrollBar;
    if (verticalScrollBar != null)
    {
        verticalScrollBar.UpdateLayout();
    }
}

それでもうまくいかない場合は、コードで OnApplyTemplate メソッドを手動で呼び出してみてください。

于 2011-08-08T10:59:01.237 に答える