使用Xamarin Forms创建Multiselect Listview(Xamarin跨平台)

时间:2015-08-21 09:20:40

标签: listview xamarin multi-select xamarin-forms

我正在尝试在Listview的每个项目中实现带有Checkbox控件的Listview。如果我想要删除两个项目,我将检查这两个项目并单击删除它应该删除。我探索了更多关于这种概念但不是能够在Github中找到单个演示示例。

编程语言:Xamarin不在Xamarin android或Xamain IOS中形成。我已经知道如何在这些平台上实现。但是我没有任何示例代码,至少为了更好地理解“Xamarin Forms中的多选和删除操作”< / p>

4 个答案:

答案 0 :(得分:4)

或创建自定义ViewCell布局(https://developer.xamarin.com/guides/cross-platform/xamarin-forms/user-interface/listview/customizing-cell-appearance/ - 自定义单元格章节)

  • SwitchCell.OnPropertyYourCustomViewCell.Checkbox.CheckedPropertyViewModel.ObservableCollection.IsChecked属性绑定(如SwitchEntryTwoBinding示例中所示)

  • 然后你可以制作ButtonToolbarItem调用方法来迭代ViewModel.ObservableCollection中的每个项目,如果IsChecked=true则删除它。

    < / LI>

答案 1 :(得分:0)

首先使用开关(或实现SwitchCell)创建自定义单元格。然后将开关的值绑定到数据模型中的bool。然后,在按钮单击事件上,一个简单的Linq查询应该可以解决问题。

确保您的项目列表是ObservableCollection,因此当您删除项目时,更改会正确传播到ListView。

答案 2 :(得分:0)

我们在这里创建了一个Multi Select ListView控件。它适用于所有平台,并且没有特定于平台的代码。 https://github.com/MelbourneDeveloper/Adapt.Presentation/blob/master/Adapt.Presentation.Standard/Adapt/Presentation/Controls/AdaptListView.cs

此处包含完整示例: https://github.com/MelbourneDeveloper/Adapt.Presentation.git

这适用于异步行为。即您可以按任何顺序设置ItemsSource或SelectedItems。回购中有一个多选样本: https://github.com/MelbourneDeveloper/Adapt.Presentation.git

还有一种行为可以通过按钮切换选择模式,以便您可以跳转到所选记录,或在列表视图中选择许多记录: https://github.com/MelbourneDeveloper/Adapt.Presentation/blob/master/Adapt.Presentation.Standard/Adapt/Presentation/Behaviours/AdaptListViewSelectionModeToggleBehavior.cs

此行为是相关的,因为它允许您从列表视图中删除所选项: https://github.com/MelbourneDeveloper/Adapt.Presentation/blob/master/Adapt.Presentation.Standard/Adapt/Presentation/Behaviours/RemoveFromCollectionBehavior.cs

不幸的是,这目前不支持CheckBoxes,但功能无需使用CheckBoxes,我们可能会在将来添加该功能。

答案 3 :(得分:0)

MVVM 如何拥有一个Xamarin.Forms.ListView,它包含一组可以选择删除的项目。删除是通过按钮命令启动的。

查看:

  • 持有ListView
  • ListView CellsSwitchCell或自定义单元格,其控件可以绑定到布尔值(最好是Xamarin.Forms.Switch)
  • 持有Button "Delete Items"

<强>型号:

  • 实现INotifyPropertyChanged接口(更新视图)
  • 保存任何其他数据
  • 持有public bool ShouldBeDeleted {... setter调用PropertyChanged()...),这将绑定到Xamarin.Forms.Switch.IsToggled bindable property

<强>视图模型:

  • 是View <{li>的BindingContext
  • 保留IList/IEnumerable
  • Model个实例
  • IList / IEnumerable将设置为Views ListView的"ItemsSource"-Property
  • 持有一个命令,该命令绑定到&#34;删除项目&#34; -Button的Command property。此命令应调用循环IList / IEnumerable的方法,并删除任何具有ShouldBeDeleted为true的项。
  • 使用ObservableCollection作为ItemList。它会在添加,删除模型或清除/刷新列表时更新视图