ScrollViewer上VerticalOffset属性的双向绑定?

Chr*_*ris 8 c# silverlight xaml

我在Silverlight 3.0中有一个View和一个ViewModel.

该视图包含一个标准的ScrollViewer,其中包含动态内容.

根据ScrollViewer中的内容,用户可以向内滚动一半,然后执行导致ScrollViewer加载新内容的操作,但ScrollViewer不会自动滚动到顶部.

我希望能够绑定到VerticalOffset属性,但它是只读的.关于可附加行为的任何想法?有任何想法吗?

谢谢.

Col*_*inE 5

以下博客文章提供了一个附加行为,该行为公开了scrollviewer的垂直/水平偏移,以便您可以绑定到它们或在代码中对其进行设置:

http://blog.scottlogic.com/2010/07/21/exposed-and-binding-to-a-silverlight-scrollviewers-scrollbars.html

这允许以下标记:

<ScrollViewer 
    local:ScrollViewerBinding.VerticalOffset="{Binding YPosition, Mode=TwoWay}"
    local:ScrollViewerBinding.HorizontalOffset="{Binding XPosition, Mode=TwoWay}">
    <!-- Big content goes here! -->
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)


Ant*_*nes 3

由于您使用的是 ViewModel,我认为“导致 ScrollViewer 加载新内容的操作”是 ViewModel 内部或对 ViewModel 进行更改的结果。在这种情况下,我会向 ViewModel 添加一个事件,每次发生此类更改时都会触发该事件。

您的视图可以为此事件添加一个处理程序,并在触发时调用 ScrollViewer 上的 ScrollToVerticalPosition。