【问题标题】:Can't select same item twice on CollectionView无法在 CollectionView 上选择两次相同的项目
【发布时间】:2020-05-31 22:10:42
【问题描述】:

我使用CollectionView 控件来显示文件列表,如果用户单击一个项目,则会出现一个弹出窗口,显示有关文件的信息和一个下载按钮,问题是我使用了SelectionChanged 方法CollectionView 运行此操作,但如果用户关闭弹出窗口并再次单击同一项目,则不会发生任何事情。回到我们使用ListView控件时,每次用户单击同一项目时都会运行ItemTapped事件,但我需要更改为CollectionView,因为稍后我们会将文件项目从单行更改为多列( 2 或 3)。

使用CollectionView控件可以让用户多次点击同一个项目吗?

P.D:也尝试将 SelectedItem 设置为 null,但如果用户再次选择相同的项目,应用程序会崩溃。

【问题讨论】:

  • 将 SelectedItem 设置为 null 时会出现什么异常?
  • @Jason 我收到了System.NullReferenceException
  • 表单的哪个版本,哪个平台?有几个与此相关的现有错误。
  • XF 版本4.6.0.800(我认为这是目前最后一个稳定版本)以及Android和iOS两个平台

标签: xamarin.forms collectionview


【解决方案1】:

当我将 SelectedItem 设置为 null 时,它对我有用。设置 selectitem 时你还做了什么?

以下是我的简单示例,我使用 DisplayAlert 而不是弹出窗口。

xaml:

<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;

        }

    }

效果如下:

【讨论】:

  • 哦,谢谢!!!,我意识到永远不要为SelectedItem 添加空检查。我一定是筋疲力尽了呵呵
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多