我正在创建一个WinRT风格的Windows Phone 8.1应用程序。它使用GridView
来显示用户可以点击以执行命令的许多切片。用户还可以按住磁贴为ReorderMode
输入GridView
。当用户按setting ReorderMode按住磁贴时,我启用重新排序。由于每个磁贴都包含一个带有绑定命令的按钮,因此我还为每个磁贴中的按钮设置了IsEnabled = false
。这允许用户在不触发命令的情况下重新排序切片。
我的问题是当用户退出ReorderMode
时重新启用每个磁贴中的按钮。默认情况下,用户可以点击后退按钮退出ReorderMode
,但我没有找到任何要收听的事件。是否有一个事件在ReorderMode
被禁用时触发,我可以侦听以重新启用每个磁贴中的按钮?订阅HardwareButtons.BackPressed
不起作用。
答案 0 :(得分:1)
订阅后退按钮并不起作用,因为GridView
会在您看到之前吃掉该事件。您必须绑定到ReorderMode:ReorderMode="{Binding ReorderProperty, Mode=TwoWay}"
然后在ReorderProperty setter中,拥有处理更改的代码。
答案 1 :(得分:0)
我最近遇到过这个问题,我的解决方案是通过拖放和用户体验来重新排序项目:
private void GridView_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { if (sender is GridView) { (sender as GridView).ReorderMode = ListViewReorderMode.Enabled; } }
private void GridView_LostFocus(object sender, RoutedEventArgs e) { if (sender is GridView) { (sender as GridView).ReorderMode = ListViewReorderMode.Disabled; } }
我的网格视图XAML代码是:
<GridView
ItemsSource="{Binding MyObservableCollection}"
AllowDrop="True"
CanDragItems="True"
CanReorderItems="True"
DoubleTapped="GridView_DoubleTapped"
LostFocus="GridView_LostFocus" >
当然,它是 Windows Phone 8.1 GridView 的解决方案。