0

ListCollectionView 有一个获取当前位置的属性(CurrentPosition):

http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.currentposition.aspx

但是这个属性是只读的。

获取 CurrentItem 在(可选地排序和过滤的)视图中的序号位置。

那么如何设置当前位置呢?我希望这不涉及行为...

我需要滚动到 ListView 或 DataGrid 的顶部,在我看来,应该可以轻松地设置一个属性来实现它,而无需进入视图的内部。

提前致谢。

更新:

目前这是我自己的解决方法 - 但它有点令人讨厌 - 当一个人想要使用 MVVM(使用 F#)时:

let linesControl = context.Window.FindName("ObjectListView") :?> ListView
let scrollBorder = VisualTreeHelper.GetChild(linesControl, 0) :?> Border
let scrollViewer = scrollBorder.Child :?> ScrollViewer
scrollViewer.ScrollToVerticalOffset(0.0)
4

2 回答 2

2

我使用的基本上是attached property解决只读、不可绑定的属性(即使大多数时候你不需要写,绑定失败)..

这篇文章解决了类似的问题ActualWidth/ ActualHeight...

http://meleak.wordpress.com/2011/08/28/onewaytosource-binding-for-readonly-dependency-property/

...您可以在那里下载代码/示例(或http://dl.dropbox.com/u/39657172/Blog/PushBindingInStyleDemo.zip)。

你用来绑定的东西是......

<pb:PushBindingManager.PushBindings>
    <pb:PushBinding TargetProperty="CurrentPosition" Path="YourPositionProperty"/>
</pb:PushBindingManager.PushBindings>  

我并没有真正在您的示例中尝试过 - 但从外观上看 - 如果CurrentPosition已经有的话,它应该以同样的方式工作。


另外,如果需要,请查看此较早的帖子以获取更多详细信息(如何在 Style 等中处理此问题)...

在子菜单 WPF 中获取焦点 MenuItem

(免责声明:不是我的文章——我只是一个感恩的用户:)

于 2013-03-22T18:01:42.063 回答
1

您可以使用

1)MoveCurrentToPosition(int position) 见:msdn

2)MoveCurrentTo(Object item) 见:msdn

3)MoveCurrentToFirst()

4)MoveCurrentToLast()

...

于 2013-03-22T16:19:11.840 回答