1
我想使用ScrollViewer的ScrollToVerticalOffset方法去滚动查看器的顶部。ScrollViewer和ScrollToVerticalOffset与mvvm
但随着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 for WP7)。我已经看到绑定只能用于FrameworkElement。
在此先感谢您的帮助
感谢您的帮助,我现在有一个xaml解析器异常 – Tim 2010-11-12 11:18:03
请更具体一点--XamlParseException表示您的XAML代码存在错误。 – robertos 2010-11-15 17:48:49
感谢您的回答,请参阅编辑 – Tim 2010-11-17 09:10:41