退出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
在您看到该事件之前就吃掉了它。您必须绑定到ReorderMode:ReorderMode="{Binding ReorderProperty, Mode=TwoWay}"
然后在ReorderProperty设置器中,拥有处理更改的代码。
我最近遇到了这个问题,我用拖放方式重新排序项目的解决方案是:
- 双击GridView项时启用拖动:
private void GridView_DoubleTapped(对象发送方,DoubleTappedRoutedEventArgs e){if(发件人是GridView){(发件人为GridView).ReorderMode=ListViewReorderMode.Enabled;}}
- 网格失去焦点时禁用重新排序:
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的解决方案。