Windows Phone上有很多关于Drag and Drop的提示,但我目前无法将所有内容放在一起。所以我希望你能给我一些建议来实现我的目标:显示具有良好重新排序和滚动体验的可滚动项目列表。
我使用StackPanel
来显示控件的垂直列表。假设这些控件是CheckBoxes
显示一些信息(实际上我创建了一些更复杂的自定义控件)。可能有很多项目,因此我在ScrollViewer
周围放置StackPanel
,以便用户可以向上和向下滚动。但现在我还想让用户有机会通过拖放重新排序列表中的控件。
我不清楚几件事情:
我很想听听您对此主题的看法,非常感谢任何帮助!
答案 0 :(得分:1)
您好,您可以查看一下,可能是您正在寻找的: http://blogs.msdn.com/b/jasongin/archive/2011/01/03/wp7-reorderlistbox-improvements-rearrange-animations-and-more.aspx
答案 1 :(得分:1)
您可以参考此link。这有一个很好的重新排序列表框与垂直滚动。按住要拖动的项目1分钟并开始拖动。
答案 2 :(得分:1)
你寻求的答案是Jason Ginchereau开发的ReorderListBox控件。
我将展示它的快速实现,但如果您想要完整的演示,请从CodePlex here下载源代码。
首先,从Nuget安装控件:
然后,在应用开始页面的XAML中(例如 MainPage.xaml ),将突出显示的程序集引用复制并粘贴到 phone:PhoneApplicationPage 标记中其他程序集引用所在的顶部。
xmlns:rlb="clr-namespace:ReorderListBox;assembly=ReorderListBox"
接下来,将其放入您的XAML页面
<rlb:ReorderListBox
x:Name="reorderListBox"
Grid.Row="2"
Margin="12,0,12,12"
IsReorderEnabled="True">
<rlb:ReorderListBox.ItemTemplate>
<DataTemplate>
<TextBlock
Margin="12,4,12,4"
FontSize="36"
Text="{Binding}" />
</DataTemplate>
</rlb:ReorderListBox.ItemTemplate>
</rlb:ReorderListBox>
最后,在您的代码隐藏(即 MainPage.xaml.cs )中,您希望使用您的数据列表定义ObservableCollection
并将其分配给{{1} }。您可能还希望在下次打开应用程序之后保存列表的状态。这是一个例子:
reorderListBox.ItemsSource