.NET MAUI ListView命令
Command设计模式广泛用于XAML和MVVM领域。ListView严格遵循Command设计模式最佳实践,并提供了一组直观且易于使用的api,允许您控制ListView行为的各个方面。
ListView公开了命令
类将自定义命令注册到每个控件的实例RadListView。命令
财产。命令
控件注册的所有自定义命令的集合CommandService
。自定义命令具有比内置(默认)命令更高的优先级。
CommandId枚举
中的所有预定义命令RadListView
实例的成员标识CommandId
枚举。该成员实际上是将命令实例与所属ListView中的特定操作/例程联系起来的键。
类中注册自定义命令RadListView
例如你可以:
- 继承自ListViewCommand类然后重写它
CanExecute
和执行
方法。 - 使用ListViewUserCommand类并绑定它的Command属性到一个
命令
在你的视图模型
。
在这两种情况下,都需要设置Id
属性,以便将其与所需的操作/事件正确关联。
的成员如下CommandId
枚举:
ItemTap
ItemSwiping
ItemSwipeCompleted
ItemSwipeStarting
PullToRefreshRequested
SelectionChanged
LoadOnDemand
ItemHold
GroupHeaderTap
ReorderStarting
ReorderEnded
这些动作对应于ListView公开的事件。有关详细信息,请参见事件的话题。
对于每个可用的命令,都有一个上下文
类型对象[CommandId] CommandContext
例如,ItemTapCommandContext
,ItemHoldCommandContext
等等。的上下文
对象作为参数传递给其执行
方法,并提供与相应事件参数相同的信息。
继承自ListViewCommand
来演示从ListViewCommand
,下面的示例处理ItemTap
作为命令的行动:
类中继承的类
ListViewCommand
然后设置它Id
财产。然后重写CanExecute
和执行
方法:公共类ItemTappedUserCommand: ListViewCommand{公共ItemTappedUserCommand() {Id = CommandId.ItemTap;}公共覆盖bool CanExecute(对象参数){返回true;}公共覆盖无效执行(对象参数){var tappedItem =(参数作为ItemTapCommandContext).Item;App.DisplayAlert("You've selected " + tappedItem);}}
控件的Commands集合中添加自定义命令
RadListView
实例:listView.Commands。添加(新ItemTappedUserCommand ());
绑定ListViewUserCommand
与ListViewUserCommand
方法中,可以直接处理自定义命令视图模型
。
控件中添加自定义命令
视图模型
:公共类ViewModel{公共ViewModel(){这。Source = new List
{“Tom”,“Anna”,“Peter”,“Teodor”,“Martin”};这一点。ItemTapCommand = new Command (this.ItemTapped);} private void ItemTapped(ItemTapCommandContext context) {var tappedItem = context. item;App.DisplayAlert("You've selected " + tappedItem);}公共列表 源{get;设置;}公共ICommand ItemTapCommand {get;设置; } } 绑定
ItemTapCommand
通过预定义的ListViewUserCommand
命令。它的Id
属性用于将命令映射到控件的相应操作:另请参阅