我正在尝试在Listview的每个项目中实现带有Checkbox控件的Listview。如果我想要删除两个项目,我将检查这两个项目并单击删除它应该删除。我探索了更多关于这种概念但不是能够在Github中找到单个演示示例。
编程语言:Xamarin不在Xamarin android或Xamain IOS中形成。我已经知道如何在这些平台上实现。但是我没有任何示例代码,至少为了更好地理解“Xamarin Forms中的多选和删除操作”< / p>
答案 0 :(得分:4)
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
或ToolbarItem
调用方法来迭代ViewModel.ObservableCollection
中的每个项目,如果IsChecked=true
则删除它。
答案 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 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
Command property
。此命令应调用循环IList / IEnumerable的方法,并删除任何具有ShouldBeDeleted为true的项。ObservableCollection
作为ItemList。它会在添加,删除模型或清除/刷新列表时更新视图