2

2つの列を含むがありListBoxます。1列にはトグルボタンが含まれ、2列にはExpander複数のコントロールが含まれています。が折りたたまれている場合expander、全体的なスクロールは正常にListBox機能します。ただし、Expanderが開いていて、エキスパンダーに大量のアイテムが含まれている場合ListBoxは、行サイズ全体がスクロールされ、expanderリストの一部が表示されないことがよくあります。

これは、リストボックスの表示可能領域よりも大きい画像をリストボックスに配置するのと似ています。この場合、スクロールバーをクリックすると、ワンクリックで画面からスクロールアウトせずに、画像を「ステップダウン」することができます。

ListBox私が説明したように、部分的なスクロールを可能にする設定はありますか?MylistBoxはで定義されxaml、コントロールはC#コードを介して追加されます。

4

1 に答える 1

6

ScrollViewer.CanContentScrollfalseに設定してスムーズスクロールをオンにしてみましたか?これはScrollViewer、アイテムを一度にスクロールするか、部分的なアイテムを使用してスムーズにスクロールするかを制御するものです。

「ScrollViewerは現在、2つのスクロールモードを許可しています。スムーズなピクセルごとのスクロール(CanContentScroll = false)または個別のアイテムごとのスクロール(CanContentScroll = true)。現在、WPFはアイテムごとにスクロールする場合にのみUI仮想化をサポートします。ピクセルベースのスクロールは「物理スクロール」とも呼ばれ、アイテムベースのスクロールは「論理スクロール」とも呼ばれます。」(この回答から)。

に多数のアイテムがある場合ListBox、これは理想的なソリューションではない可能性がありますが、仮想化がオフになり、パフォーマンスに影響を与える可能性があります。スムーズなスクロールと仮想化の詳細については、この回答をご覧ください。(1つの回答は、スムーズなスクロールと仮想化を可能にするハックを示唆しています)。

于 2013-03-01T16:43:52.607 に答える