我想阻止取消选择列表视图项(如果已选中)的功能。因此,如何防止鼠标右键单击取消选择项目?
我已阻止使用列表视图上的IsSwipeEnabled="False"
通过滑动取消选择的功能。我没有要求列表视图上的滑动功能。
如果需要,我很高兴完全阻止鼠标右键单击列表视图项。
答案 0 :(得分:2)
如果我正确地阅读您的问题,听起来您希望用户能够选择项目,但无法取消选择。如果是这种情况,它似乎是一个奇怪的要求 - 它违反了普通的UI惯例,并做了用户不期望的事情。
话虽如此,您可以通过处理ListView
中的SelectionChanged事件来实现此目的。
触发事件时,它会显示已删除(取消选中)的项目列表。然后,您只需将这些项目添加回ListView的选定项目列表中:
private void itemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (var item in e.RemovedItems)
{
itemListView.SelectedItems.Add(item);
}
}
请注意,如果您使用上述代码,则无需处理任何滑动或鼠标事件。
编辑 - 根据OP的评论,要求与我的想法略有不同:
如果选择了其他项目,我希望取消选择所选项目。但是我不想要的是已经选择的项目(手动)取消选择
假设您只有一个选择ListView
,您仍然可以使用SelectionChanged
事件和SelectionChangedEventArgs
来执行您要求的操作:
private void itemListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.RemovedItems.Count > 0 && e.AddedItems.Count == 0)
{
var removed = e.RemovedItems[0];
itemListView.SelectedItem = removed;
}
}
答案 1 :(得分:1)
我在以下forum找到了一个简单的解决方案。
您只需将RightTapped事件添加到ListView DataTemplate内容。
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ContentPresenter RightTapped="daves_RightTapped" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后在后面的代码中:
private void daves_RightTapped(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
{
e.Handled = true;
}
这适用于Outlook样式ListView。