使用WinRT中的VariableSizedWrapGrid重新排序GridView中的项目

时间:2012-12-19 10:24:18

标签: windows-runtime winrt-xaml windows-store-apps

我想创建像this

这样的VariableSizedWrapGrid

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

有人能指出我缺少接口的正确方向吗?

1 个答案:

答案 0 :(得分:1)

布鲁姆,

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

这是一篇精彩的博客文章,详细说明了您需要做的事情:

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

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

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

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

顺便说一句,如果您使用的是GroupedDataSource,请拖动&掉落也会被打破。我发现通过嵌套Gridviews& amp;我可以轻松地绕过整个GroupedDataSource概念。 Listsviews。

HTH