【问题标题】:Xamarin Forms Collection with Multiple selection - limit number of selected items具有多项选择的 Xamarin 表单集合 - 限制所选项目的数量
【发布时间】:2019-10-09 22:27:40
【问题描述】:

我需要限制我的 CollectionView 中选定项目的数量。 例如:我有一个 CollectionView,列表中有 20 个项目,但用户只能从 20 个项目中选择 5 个。这可能吗?

谢谢!

【问题讨论】:

    标签: xamarin xamarin.forms collectionview


    【解决方案1】:

    可能。您可以通过SelectableItemsView.SelectedItems Property 了解选择了多少项目。

    并调用SelectableItemsView.SelectionChanged Event 来监控其计数如下:

    XML:

        <CollectionView x:Name="collectionView"
                        ItemsSource="{Binding Monkeys}"
                        SelectionMode="Multiple"
                        SelectionChanged="collectionView_SelectionChanged"
                        SelectedItems="{Binding SelectedMonkeys}">
            ...
        </CollectionView>
    

    内容页面:

    private void collectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        Console.WriteLine("count is :" + collectionView.SelectedItems.Count);
        if(collectionView.SelectedItems.Count < 20 & collectionView.SelectedItems.Count >5)
        {
            // write code you want .
        }
    }
    

    这里是官方的document,也有官方的sample供参考。

    【讨论】:

    • 我已经尝试过了,例如,问题是 SelectionChangedEventArgs 没有 e.Cancel。它需要有一个之前发生的事件,比如 OnSelectionChanging。但我用另一种方式做了,它并不理想,但它解决了: void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e) { if (list.SelectedItems.Count > 5) { list.SelectedItems.Remove(list.SelectedItems[list.SelectedItems.计数 - 1]); } } 谢谢!
    • @RicardoMiguel 很高兴解决了!是的,需要设计程序中更详细的逻辑。好的,如果我的回答有帮助,您可以投票。您还可以更新您的解决方案以让其他人知道如何解决它*.^
    【解决方案2】:

    虽然不理想,但可以解决:

    void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e) {
       if (list.SelectedItems.Count > 5) 
       { 
          list.SelectedItems.Remove(list.SelectedItems[list.SelectedItems.Count - 1]); 
       } 
    }
    

    【讨论】:

    • Gald 分享。记得稍后标记您的答案,如果我的答案有帮助,感谢您提前投票。
    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 2013-04-02
    • 2020-10-18
    • 1970-01-01
    • 2017-11-27
    • 2015-07-26
    • 2012-12-17
    • 2016-04-18
    相关资源
    最近更新 更多