Я не думаю, что Вы будете в состоянии использовать раскадровку WPF для анимации, потому что раскадровки анимируют свойства зависимости WPF. Необходимо будет звонить ScrollViewer.ScrollToHorizontalOffset(double)
для прокрутки.
Вы могли попытаться создать пользовательское свойство зависимости, которое называет SetHorizontalOffset в OnDependencyPropertyChanged () функцией. Тогда Вы могли анимировать это свойство.
public static readonly DependencyProperty ScrollOffsetProperty =
DependencyProperty.Register("ScrollOffset", typeof(double), typeof(YOUR_TYPE),
new FrameworkPropertyMetadata(0.0, new PropertyChangedCallback(OnScrollOffsetChanged)));
public double ScrollOffset
{
get { return (double)GetValue(ScrollOffsetProperty); }
set { SetValue(ScrollOffsetProperty, value); }
}
private static void OnScrollOffsetChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
YOUR_TYPE myObj = obj as YOUR_TYPE;
if (myObj != null)
myObj.SCROLL_VIEWER.ScrollToHorizontalOffset(myObj.ScrollOffset);
}
Для получения средства просмотра прокрутки можно использовать VisualTreeHelper для поиска визуальных детей ListBox. Сохраните ссылку на ScrollViewer, потому что Вам будет нужен он позже. Попробуйте это:
public static childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
// Iterate through all immediate children
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
Эта функция возвращает первого визуального ребенка типа параметра. Звоните FindVisualChild<ScrollViewer>(ListBox)
для получения ScrollViewer.
Наконец, попытайтесь использовать UIElement.TranslatePoint(Point, UIElement)
для получения X положений объекта. Вызовите эту функцию на объекте, передаче в 0,0 для точки и передачи в ScrollViewer.
Hope это помогает.
Уилберфорс в основном прав.
Тем не менее, я предлагаю взглянуть на математическую библиотеку Apache Commons - это был бы лучший выбор для замены пакета Java numeric, чем любой из перечисленных в ответе Wilberforce.
На sourceforge доступна сборка под названием JNumeric:
Версия sourceforge давно не выпускалась, но похоже, что обновленная версия для Jython 2.51 также доступна (сам не пробовал):