我正在尝试在 Listview 的每个项目中实现一个带有 Checkbox 控件的 Listview。如果我想删除两个项目,我将检查这两个项目并单击删除它应该删除。我探索了更多关于这种概念但无法找到Github 中的单个演示示例。
编程语言:Xamarin 表单不在 Xamarin android 或 Xamain IOS 中。我已经知道如何在这些平台中实现。但我没有任何示例代码至少可以更好地理解“Xamarin 表单中的多选和删除操作”
我正在尝试在 Listview 的每个项目中实现一个带有 Checkbox 控件的 Listview。如果我想删除两个项目,我将检查这两个项目并单击删除它应该删除。我探索了更多关于这种概念但无法找到Github 中的单个演示示例。
编程语言:Xamarin 表单不在 Xamarin android 或 Xamain IOS 中。我已经知道如何在这些平台中实现。但我没有任何示例代码至少可以更好地理解“Xamarin 表单中的多选和删除操作”
SwitchCell
(此处示例:https ://github.com/xamarin/xamarin-forms-samples/tree/master/UserInterface/ListView/SwitchEntryTwoBinding/twoWayBinding ))或创建自定义ViewCell
布局(https://developer.xamarin.com/guides/cross-platform/xamarin-forms/user-interface/listview/customizing-cell-appearance/ -自定义单元格章节)
绑定SwitchCell.OnProperty
或YourCustomViewCell.Checkbox.CheckedProperty
使用您的ViewModel.ObservableCollection.IsChecked
属性(如 SwitchEntryTwoBinding 示例)
然后你可以创建一个Button
or ToolbarItem
which 调用方法来迭代每个项目ViewModel.ObservableCollection
并在 if 中删除它IsChecked=true
。
我们在这里创建了一个多选 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 即可工作,我们将来可能会添加该功能。
首先创建一个带有开关(或实现SwitchCell
)的自定义单元格。然后将开关的值绑定到数据模型中的布尔值。然后,在按钮单击事件上,一个简单的 Linq 查询就可以解决问题。
确保您的项目列表是ObservableCollection
,因此当您删除项目时,更改会正确传播到 ListView。
如何拥有一个 Xamarin.Forms.ListView 的MVVM方法,其中包含一组可以选择删除的项目。通过按钮命令启动删除。
看法:
ListView
ListView Cells
是SwitchCell
具有可以绑定到布尔值(最好是 Xamarin.Forms.Switch)的控件的自定义单元格或自定义单元格Button "Delete Items"
模型:
INotifyPropertyChanged
接口(更新视图)public bool ShouldBeDeleted
{ ... setter 调用 PropertyChanged() ...),这将被绑定到Xamarin.Forms.Switch.IsToggled bindable property
视图模型:
BindingContext
视图的IList/IEnumerable
实例Model
"ItemsSource"-Property
Views ListView 的Command property
“删除项目”按钮的命令。此命令应调用一个方法,该方法循环通过 IList/IEnumerable 并删除所有将 ShouldBeDeleted 设置为 true 的项目。ObservableCollection
项目列表。它会在添加、删除模型或清除/刷新列表时更新视图