我想防止在列表视图项已被选中时取消选中的功能。因此,我如何防止鼠标右键取消选择项目的能力?
我已经阻止了通过在列表视图上使用IsSwipeEnabled="False"
通过滑动来取消选择的能力。我不需要在列表视图上滑动。
我很高兴完全防止鼠标右键点击列表视图项目,如果需要。
如果我正确理解了你的问题,听起来你想让用户能够选择项目,但不能取消选择。如果是这样的话,这似乎是一个奇怪的需求——它违背了正常的UI约定,并且做了一些用户意想不到的事情。
话虽如此,您可以通过处理ListView
中的SelectionChanged事件来做到这一点。
当事件被触发时,它会给您一个删除(取消选择)项目的列表。然后你只需要将这些项目添加回ListView的selected items列表中:
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;
}
}
我在下面的论坛上找到了一个简单的解决方案。
你只需要添加一个right ttapping事件到listviewdatatemplate内容。
<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;
}