【发布时间】:2010-11-11 16:47:18
【问题描述】:
我想使用 ScrollViewer 的 ScrollToVerticalOffset 方法转到滚动查看器的顶部。
但使用 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(实际上,这是 WP7 的 SL)。我已经看到绑定应该只对 FrameworkElement 起作用。
提前感谢您的帮助
【问题讨论】:
标签: silverlight behavior