退出GridView';时发生的事件;s在Windows Phone 8.1上的重新排序模式

本文关键字:新排序 模式 排序 Phone GridView 退出 事件 Windows | 更新日期: 2023-09-27 18:30:00

我正在创建一个WinRT风格的Windows Phone 8.1应用程序。它使用GridView来显示许多瓦片,用户可以点击这些瓦片来执行命令。用户还可以持有一个磁贴,为GridView输入ReorderMode。当用户持有磁贴时,我通过设置ReorderMode来启用重新排序。由于每个磁贴都包含一个绑定了命令的按钮,因此我还为每个磁贴中的按钮设置了IsEnabled = false。这允许用户在不触发命令的情况下重新排序磁贴。

我的问题是在用户退出ReorderMode时重新启用每个磁贴中的按钮。默认情况下,用户可以点击后退按钮退出ReorderMode,但我没有找到任何可收听的事件。是否有在禁用ReorderMode时触发的事件,我可以收听以重新启用每个磁贴中的按钮?订阅HardwareButtons.BackPressed不起作用。

退出GridView';时发生的事件;s在Windows Phone 8.1上的重新排序模式

订阅后退按钮不起作用,因为GridView在您看到该事件之前就吃掉了它。您必须绑定到ReorderMode:ReorderMode="{Binding ReorderProperty, Mode=TwoWay}"

然后在ReorderProperty设置器中,拥有处理更改的代码。

我最近遇到了这个问题,我用拖放方式重新排序项目的解决方案是:

  1. 双击GridView项时启用拖动:
private void GridView_DoubleTapped(对象发送方,DoubleTappedRoutedEventArgs e){if(发件人是GridView){(发件人为GridView).ReorderMode=ListViewReorderMode.Enabled;}}
  1. 网格失去焦点时禁用重新排序:
private void GridView_LostFocus(对象发送方,RoutedEventArgs e){if(发件人是GridView){(发件人为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的解决方案。