Я бы хотел использовать метод ScrollToVerticalOffset объекта ScrollViewer для перехода к вершине прокрутки.
Но с подходом MVVM.
Я думаю, что мне нужно создать свойство зависимостей для такого поведения.
РЕДАКТИРОВАТЬ:
Поведение:
public class ScrollPositionBehavior : Behavior<FrameworkElement>
{
public double Position
{
get { return (double)GetValue(PositionProperty); }
set { SetValue(PositionProperty, value); }
}
public static readonly DependencyProperty PositionProperty = DependencyProperty.Register("Position", typeof(double), typeof(ScrollPositionBehavior), new PropertyMetadata((double)0, new PropertyChangedCallback(OnPositionChanged)));
protected override void OnAttached()
{
base.OnAttached();
}
private static void OnPositionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ScrollPositionBehavior behavior = d as ScrollPositionBehavior;
double value = (double)e.NewValue;
((ScrollViewer)(behavior.AssociatedObject)).ScrollToVerticalOffset(value);
}
protected override void OnDetaching()
{
base.OnDetaching();
}
}
используется как:
<ScrollViewer>
<Interactivity:Interaction.Behaviors>
<fxBehavior:ScrollPositionBehavior Position="{Binding Position}" />
</Interactivity:Interaction.Behaviors>
<other things ...>
</ScrollViewer>
с
xmlns:Interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:fxBehavior="clr-namespace:MyNamespace.Behavior;assembly=MyAssembly"
У меня есть исключение парсера xaml:
это: AG_E_PARSER_BAD_PROPERTY_VALUE
Обратите внимание, что я использую поведение, основанное на FrameworkElement, так как я использую silverlight 3 (на самом деле это SL для WP7). Я видел, что привязка должна работать только для FrameworkElement.
Заранее спасибо за помощь