Windows phone 7 可以通过编程方式滚动windows phone中的scrollviewer吗?
是否可以从代码中滚动Windows phone 7 可以通过编程方式滚动windows phone中的scrollviewer吗?,windows-phone-7,windows-phone-8,Windows Phone 7,Windows Phone 8,是否可以从代码中滚动ScrollViewer 如果是,怎么做 如果没有,您可以建议一些解决方法以获得类似的效果。我有一个包含RichTextBox的ScrollViewer,我想从代码中滚动内容。ScrollViewer.ScrollToVerticallOffset()立即滚动到提供的偏移量 如果您需要一些简单的平滑滚动功能,首先创建一个类,允许绑定到ScrollViewer: public class ScrollViewerOffsetMediator : FrameworkElement
ScrollViewer
如果是,怎么做
如果没有,您可以建议一些解决方法以获得类似的效果。我有一个包含RichTextBox的ScrollViewer,我想从代码中滚动内容。
ScrollViewer.ScrollToVerticallOffset()
立即滚动到提供的偏移量
如果您需要一些简单的平滑滚动功能,首先创建一个类,允许绑定到ScrollViewer
:
public class ScrollViewerOffsetMediator : FrameworkElement
{
/// <summary>
/// ScrollViewer instance to forward Offset changes on to.
/// </summary>
public ScrollViewer ScrollViewer
{
get { return (ScrollViewer)GetValue(ScrollViewerProperty); }
set { SetValue(ScrollViewerProperty, value); }
}
public static readonly DependencyProperty ScrollViewerProperty =
DependencyProperty.Register(
"ScrollViewer",
typeof(ScrollViewer),
typeof(ScrollViewerOffsetMediator),
new PropertyMetadata(OnScrollViewerChanged));
private static void OnScrollViewerChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var mediator = (ScrollViewerOffsetMediator)o;
var scrollViewer = (ScrollViewer)(e.NewValue);
if (null != scrollViewer)
{
scrollViewer.ScrollToVerticalOffset(mediator.VerticalOffset);
}
}
/// <summary>
/// VerticalOffset property to forward to the ScrollViewer.
/// </summary>
public double VerticalOffset
{
get { return (double)GetValue(VerticalOffsetProperty); }
set { SetValue(VerticalOffsetProperty, value); }
}
public static readonly DependencyProperty VerticalOffsetProperty =
DependencyProperty.Register(
"VerticalOffset",
typeof(double),
typeof(ScrollViewerOffsetMediator),
new PropertyMetadata(OnVerticalOffsetChanged));
public static void OnVerticalOffsetChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var mediator = (ScrollViewerOffsetMediator)o;
if (null != mediator.ScrollViewer)
{
mediator.ScrollViewer.ScrollToVerticalOffset((double)(e.NewValue));
}
}
}
公共类ScrollViewerOffsetMediator:FrameworkElement
{
///
///ScrollViewer实例将偏移量更改转发到。
///
公共滚动查看器滚动查看器
{
获取{return(ScrollViewer)GetValue(ScrollViewerProperty);}
设置{SetValue(ScrollViewerProperty,value);}
}
公共静态只读从属属性ScrollViewerProperty=
从属属性。寄存器(
“滚动查看器”,
类型(滚动查看器),
类型(ScrollViewerOffsetMediator),
新属性元数据(OnScrollViewerChanged));
CrollViewerChanged上的私有静态无效(DependencyObject o、DependencyPropertyChangedEventArgs e)
{
var mediator=(ScrollViewerOffsetMediator)o;
var scrollViewer=(scrollViewer)(e.NewValue);
if(null!=滚动查看器)
{
scrollViewer.ScrollToVerticalOffset(mediator.VerticalOffset);
}
}
///
///要转发到ScrollViewer的VerticalOffset属性。
///
公共双垂直偏移
{
获取{return(double)GetValue(VerticalOffsetProperty);}
set{SetValue(VerticalOffsetProperty,value);}
}
公共静态只读从属属性VerticalOffsetProperty=
从属属性。寄存器(
“垂直偏移”,
类型(双),
类型(ScrollViewerOffsetMediator),
新的不动产数据(垂直偏移变化);
VerticalOffsetChanged上的公共静态无效(DependencyObject o、DependencyPropertyChangedEventArgs e)
{
var mediator=(ScrollViewerOffsetMediator)o;
if(null!=mediator.ScrollViewer)
{
ScrollViewer.ScrollToVerticalOffset((双精度)(e.NewValue));
}
}
}
然后添加到xaml:
<my:ScrollViewerOffsetMediator x:Name="Mediator" ScrollViewer="{Binding ElementName=SmoothScroll}" Margin="0" VerticalAlignment="Top"/>
,其中SmoothScroll
是ScrollViewer
对象
在此阶段,您可以在Mediator
对象上创建所需的任何动画,以设置滚动动画的可能副本