2011-03-31 50 views
5

我有這樣的情況,即我的C#WPF應用程序包含其元素爲擴展器的ListView。每個擴展器都包含一個帶有ListViewItems的ListView。這裏是一張圖片: enter image description here包含含有ListView的擴展器的ListView的滾動不起作用

在右邊你可以看到一個滾動條。而那個ScrollBar是我的問題。它得到了兩個問題:

  1. 使用鼠標滾輪在擴展列表時滾動條不工作。我的意思是從「Controller」到「FullInstallation」的區域。如果懸停在標題上(「所有測試」),ScrollBar會滾動。我認爲Expander裏的ListView默認有一個ScrollBar,它可以「竊取」MouseWheel事件。但是,我不知道該怎麼辦。

  2. ScrollBar滾動擴展器項目而不是擴展器內容。我的意思是,這是不可能滾動一下,而是總是滾動至少1個擴展器項目。我希望滾動條滾動,以便可以看到例如「所有測試」擴展器的一半。

圖片顯示禁用的滾動條,但通過縮小窗口,滾動條被啓用。

我迄今爲止嘗試:

  1. 的ScrollViewer外的ListView外:這解決了問題1,但它意味着鼠標滾輪不會在所有的工作!這是因爲外部的ListView生成了自己的ScrollViewer(用Snoop來查找),它「竊取」了MouseWheel事件。

  2. 重定向所有所有控件的鼠標滾輪事件(ListView控件,擴展,ListViewItem的)到ScrollViewer中:我再次使用的ScrollViewer外的ListView之外,這一次我用我的所有控件的鼠標滾輪事件調用外部ScrollViewer的MouseWheel事件。這確實奏效,但是對於鼠標指針的某些位置,它沒有。例如,在兩個ListViewItems之間有一個小的1毫米空間,MouseWheel事件沒有捕獲。或者在最後一個Expander(「Short Tests」)之後的底部。在那裏我沒有得到任何事件。

我嘗試了更多的事情,但沒有得到任何進一步的。 有沒有人有一個想法如何解決這個問題?

最良好的祝願, 基督教

回答