2013-03-01 144 views
2

我有一個ListBox包含兩列 - 第一列包含一個切換按鈕,第二列包含一個Expander與其中的多個控件。如果expander已摺疊,則ListBox的整體滾動工作正常。但是,如果Expander處於打開狀態且擴展器包含大量項目,則ListBox將滾動整個行大小,通常不會顯示expander列表的一部分。部分垂直滾動

這與在列表框中放置大於列表框可視區域的圖像類似。在這種情況下,如果您單擊滾動條,您將希望「逐步」下圖像,而不需要單擊滾動屏幕。

是否有一個ListBox的設置,允許我描述的部分滾動?我的listBox定義在xaml中,控件是通過C#代碼添加的。

回答

5

您是否嘗試過將平滑滾動設置爲ScrollViewer.CanContentScroll爲false?這是控制ScrollViewer將一次滾動一個項目,還是順利地使用部分項目。

「的ScrollViewer目前允許兩個滾動模式:平滑 逐像素滾動(CanContentScroll =假)或離散 項逐項滾動(CanContentScroll =真)當前WPF 只支持時UI虛擬按項目滾動基於像素的 滾動也稱爲「物理滾動」,基於項目的滾動 也稱爲「邏輯滾動」。 (來自this answer)。

如果您在ListBox有很多的項目,這可能不是一個理想的解決方案,但是,因爲它會關閉虛擬化,因此可能會影響性能。看看this answer,以瞭解更多關於平滑滾動和虛擬化的信息。 (一個答案表明黑客可以順利進行滾動和虛擬化)。

+0

Brian S,那是我正在尋找的解決方案。這允許部分滾動。謝謝。 – gmletzkojr 2013-03-01 16:50:16

+0

@gmletzkojr,很高興它解決了你的問題。 – 2013-03-01 16:53:19