3

我想像这样创建VariableSizedWrapGrid

但是,我也希望这些项目是可拖动的(CanReorderItems 属性),根据这篇文章,这是不支持的,因为缺少“某些”接口。我试过了,如果我使用 VariableSizedWrapGrid,重新排序确实会停止工作。

有人能指出我完成这项工作所缺少的接口的正确方向吗?

4

1 回答 1

1

弗洛雷斯,

您几乎必须自己实现拖动事件。

这是一篇出色的博客文章,详细说明了您需要做什么:

http://www.renauddumont.be/en/2012/windows-8-csharp-xaml-drag-drop

但是,博客并没有提到如何很好地完成 DragOver 逻辑。基本上,您必须检查您结束的项目,然后根据方向(向上/向下/向左/向右拖动)您必须调用相应的视觉状态才能获得流畅的动画。

因此,例如,如果拖动的项目位于其下方的项目上方(您可以根据集合中项目的索引进行检查),那么您需要执行以下操作:

VisualStateManager.GoToState((Control)containerOfItemBelow, "BottomReorderHint", true);

顺便说一句,如果您使用的是 GroupedDataSource,拖放也会被破坏。我发现我可以通过嵌套 Gridviews 和 Listsviews 轻松绕过整个 GroupedDataSource 概念。

高温高压

于 2012-12-21T08:28:17.657 回答