2016-08-08 12 views
2

Wie kann ich ein WPF (3.5) TreeView-Bildlaufereignis verhindern?ScrollViewer-Bildlauf verhindern

Es gibt eine ScrollViewer_ScrollChanged Ereignis, aber das ist nicht gut, so dass nach die Scroll passiert genannt wird, so kann ich nur die Scroll rückgängig zu machen, nicht verhindern.
Ich suche so etwas wie dieses (pseudo):

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

Dank

EDIT

Ich möchte Scrollbalken haben, und Benutzer sollten blättern Lage sein, außer wenn einige Bedingung passiert if (...) - nur dann Scroll dynamisch zu verhindern.

Genauer gesagt, möchte ich die Bildlaufleisten nur integer Lage haben, so dass, wenn Benutzer einen Bildlauf auf 1.000,45, sollte es Dies ist auf 1000
eingestellt werden, da sonst WPF Probleme mit Bitmap im Baum Rendering hat ..
Wenn wir zulassen, dass die Bildlaufposition nur Integer ist, scheint das Rendering in Ordnung zu sein.
(nein, nicht SnapToDevicePixels nicht helfen, und nein, wir können nicht LayouRouding verwenden)

+0

, die Sie steuern, verwenden? – Joseph

+0

Eigentlich ist es ein Grid, das 3 Spalten enthält. In der ersten ist ein TreeView. Das ist das Scrollen. Ich weiß jedoch nicht, ob die Bildlaufleiste zum Tree oder zum Grid gehört. Aber eigentlich sollte es nichts ausmachen, es ist ein ScrollViewer am Ende. – Zotyi

Antwort

0

Die Abhilfe kann so aussehen:

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

Nein, ich möchte eine Bildlaufleiste haben und möchte, dass der Benutzer sie verwenden kann. Nehmen wir an, wenn der Benutzer versucht, über Position 1000 zu blättern, dann erlaube dies nicht. Oder wie auch immer, siehe mein Pseudo-Beispiel in der Frage. 'if (...)' – Zotyi

+0

Got that, bearbeitet die Antwort – Cyferka

+0

Woher weiß ich, dass was ist der VerticalChange/HorizontalChange während des Scrollen? Ich habe es nicht versucht, aber dein Vorschlag wird nur sagen, dass jemand die Scrollbar angeklickt hat, oder? Nicht die Details. – Zotyi