просто быстрый хак для этого (это означает, что вы можете сделать это в более удобном пути, может быть, с прикрепленным поведения)
private void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var lb = sender as ListBox;
if (lb != null) {
// get or store scrollviewer
if (lb.Tag == null) {
lb.Tag = GetDescendantByType(lb, typeof(ScrollViewer)) as ScrollViewer;
}
var lbScrollViewer = lb.Tag as ScrollViewer;
if (lbScrollViewer != null) {
if (e.Delta < 0) {
lbScrollViewer.LineDown();
} else {
lbScrollViewer.LineUp();
}
e.Handled = true;
}
}
}
метод GetDescendantByType
public static Visual GetDescendantByType(Visual element, Type type)
{
if (element == null) {
return null;
}
if (element.GetType() == type) {
return element;
}
Visual foundElement = null;
if (element is FrameworkElement) {
(element as FrameworkElement).ApplyTemplate();
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++) {
Visual visual = VisualTreeHelper.GetChild(element, i) as Visual;
foundElement = GetDescendantByType(visual, type);
if (foundElement != null) {
break;
}
}
return foundElement;
}
использование
<ListBox PreviewMouseWheel="OnPreviewMouseWheel" />
Надеюсь, что поможет
вы должны быть в состоянии отключить прокрутку, но захватите событие прокрутки, а затем используйте 'JQuery' или аналогичный, чтобы затем прокручивать элементы до предопределенной высоты, о которой вы указали. Не спрашивайте меня на примерах :) :) –