在Windows Phone 8.1上退出GridView重新排序模式时的事件

时间:2014-11-11 20:34:07

标签: c# xaml gridview windows-phone-8.1

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我最近遇到过这个问题,我的解决方案是通过拖放和用户体验来重新排序项目:

  1. 双击GridView项目时启用拖动:
  2. private void GridView_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
            {
                if (sender is GridView)
                {
                    (sender as GridView).ReorderMode = ListViewReorderMode.Enabled;
                }
            }
    
    1. 当Grid失去焦点时禁用重新排序:
    2.     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 的解决方案。