ListView 重新排序删除后退按钮行为

ListView reorder removes back button behavior

我有一个列表视图

<ListView x:Name="TasksListView" Margin="24,10,0,0" Grid.Row="3" Padding="0,0,12,0" 
          ItemsSource="{Binding Tasks}" ReorderMode="Enabled" IsItemClickEnabled="True" 
          ItemContainerStyle="{StaticResource TaskItemStyle}" 
          IsEnabled="{Binding IsLoading, Converter={StaticResource InverseBooleanConverter}}"/>

当我重新排序项目时,后退按钮导航在第一次点击时失败。它适用于第二次点击。当我点击 HardwareButtons_BackPressed 时,列表视图的重新排序模式似乎是 "Disabled"。关于为什么会发生这种情况的任何想法?

它不会删除后退按钮行为 - ListView 的重新排序模式的设计方式是,当您点击后退按钮时,ListView 离开重新排序模式。

我认为问题是您使用 ReorderMode = ListViewReorderMode.Enabled 启动 ListView - 所以第一次,当您点击后退按钮时,它会离开重新排序模式,并且下一个后退按钮按正常工作。

解决方案可能是在某些情况下启用重新排序模式 - 例如当用户持有您的 ListView 时:

private void List_Hold(object sender, HoldingRoutedEventArgs e) 
{ 
     (sender as ListView).ReorderMode = ListViewReorderMode.Enabled; 
}

MessageDialog 类似的情况 - 在您显示它之后,后退按钮将关闭它并且您的后退键事件不会被触发。