xamarin.forms - 无法在 CollectionView 上选择两次相同的项目
问题描述
我使用CollectionView
控件来显示文件列表,如果用户单击一个项目,则会出现一个弹出窗口,显示有关文件的信息和一个下载它的按钮,问题是我使用 的SelectionChanged
方法CollectionView
来运行此操作,但是如果用户关闭弹出窗口并再次单击同一项目没有任何反应。回到我们使用ListView
控件时,ItemTapped
每次用户单击同一项目时都会运行该事件,但我需要更改为,CollectionView
因为稍后我们会将文件项目从单行更改为多列(2 或 3)。
是否可以让用户通过控制多次点击同一个项目CollectionView
?
PD:也尝试将 设置SelectedItem
为 null 但如果用户再次选择相同的项目,应用程序将崩溃。
解决方案
当我SelectedItem
设置null
为时它对我有用。当你设置选择项时你还做了什么?
下面是我的简单示例,我使用 DisplayAlert 而不是弹出窗口。
xml:</p>
<CollectionView x:Name="collection" SelectionChanged="CollectionView_SelectionChanged" SelectionMode="Single" >
<CollectionView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
<x:String>Golden Lion Tamarin</x:String>
<x:String>Howler Monkey</x:String>
<x:String>Japanese Macaque</x:String>
</x:Array>
</CollectionView.ItemsSource>
</CollectionView>
在页面 xaml.cs 中:
private async void CollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (collection.SelectedItem != null)
{
await DisplayAlert("Question?", "Would you like to play a game", "Yes", "No");
collection.SelectedItem = null;
}
}
效果如下:</p>
推荐阅读
- ssl - 如何使用 openssl 进行 TLS 1.3 PSK?
- svg - SVG嵌套过滤器使白色透明
- php - 从数据库中查找两个日期之间的差异并将不同的日期保存到 Laravel 中的数据库
- azure - 带有 Azure Functions 和存储帐户的托管标识
- javascript - 测试对象的函数是否已在开玩笑的另一个函数中被调用
- c# - 多数据库登录
- reactjs - 用 Gatsby 反应路由器
- java - Jackson ArrayNode.add Java 函数的问题
- python - Python 在数据框中的许多令人满意的行中找到行的特定索引
- swift - WatchOS:蓝牙 CBCentralManager 在独立 Apple Watch 应用程序上始终处于“不受支持”状态