2016-08-08 241 views
2

如何防止WPF(3.5)TreeView滾動事件?防止ScrollViewer滾動

還有一個ScrollViewer_ScrollChanged事件,但那不好,因爲那個之後的這個滾動發生了,所以我只能撤消滾動,不能阻止。
我期待這樣的事情(僞):

ScrollViewer_ScrollChangING(EventParam e) 
{ 
    if (...) 
     e.Cancel = true; 
} 

感謝

編輯

我想有滾動條,並且用戶應該能夠滾動,除了當一些情況發生if (...) - 只有然後防止動態滾動。

更確切地說,我想滾動條有只有整數位置,所以如果用戶滾動到1000.45,應該調整到1000
這是因爲否則WPF已呈現與樹中的位圖的問題..
如果我們允許滾動位置僅爲整數,則渲染似乎可以。
(不,SnapToDevicePixels不幫助,不,我們不能用LayouRouding)

+0

它控制你正在使用? – Joseph

+0

其實它是一個網格,其中包含3列。在第一個,是一個TreeView。這就是滾動。但是,我不知道滾動條是屬於樹還是屬於網格。但實際上並不重要,它最終是一個ScrollViewer。 – Zotyi

回答

0

的解決方法可以是這樣的:

private void TreeView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    if (e.OriginalSource is System.Windows.Controls.Border) 
    { 
    ...your code 
    } 
} 
private void TreeView_PreviewMouseWheel(object sender, MouseWheelEventArgs e) 
{ 
...your code 
} 
+0

不,我想要一個滾動條,並希望用戶能夠使用它。除此之外,比方說,當用戶試圖滾動位置1000時,不要允許。或者無論什麼情況,請看我的疑問。 '如果(...)' – Zotyi

+0

得到了,編輯了答案 – Cyferka

+0

由此,我將如何知道在滾動過程中VerticalChange/Horizo​​ntalChange是什麼?我沒有嘗試,但你的建議只會說有人點擊了滾動條,不是嗎?不是細節。 – Zotyi