现在在 UWP Community Toolkit 示例应用程序中,我只找到了控件的 XAML,但没有找到可以在控件中找到删除按钮的事件处理程序的代码文件。
它就在这里:
在官方示例中,它ObservableCollection
用于 的项目源ListView
,而不是静态列表,使用它的优点是这是一个动态数据集合,它在添加、删除或刷新整个列表时提供通知。因此,在这个示例中,它只绑定了一个名为of的 delegateCommand DeleteItem
,如下所示:RightCommand
SlidableListItem
RightCommand="{Binding DeleteItem, ElementName=Page, Mode=OneWay}"
在后面的代码中:
private DelegateCommand<Item> _deleteItem = default(DelegateCommand<Item>);
public DelegateCommand<Item> DeleteItem => _deleteItem ?? (_deleteItem = new DelegateCommand<Item>(ExecuteDeleteItemCommand, CanExecuteDeleteItemCommand));
...
private bool CanExecuteDeleteItemCommand(Item item)
{
return true;
}
private void ExecuteDeleteItemCommand(Item item)
{
_items.Remove(item);
}
正如您在此处看到的,它仅从 中删除项目ObservableCollection
,相关SlidableListItem
的ListView
也将被删除。
现在到了你的问题,如果你想使用RightCommandRequested="SlidableListItem_RightCommandActivated"
,没关系,SlidableListItem_RightCommandActivated
当你从右向左滑动时会触发。问题是您的项目来源,它是一个静态列表,以确保您ListView
可以在列表更改时收到通知,您可以:
将您的静态列表复制到 aObservableCollection
并将其绑定ObservableCollection
到ItemsSource
of ListView
,在您的SlidableListItem_RightCommandActivated
事件中删除静态列表和ObservableCollection
.
INotifyPropertyCanged
为您的静态列表实现接口。
顺便说一句,您可以SlidableListItem_RightCommandActivated
像这样获取示例中的刷过项目:
private void SlidableListItem_RightCommandRequested(object sender, System.EventArgs e)
{
var slidableitem = sender as SlidableListItem;
var item = slidableitem.DataContext as Item;
}
如果您想要演示,可以发表评论。