簡體   English   中英

UWP社區Tookit,SlidableListView刪除列表項

[英]UWP Community Tookit, SlidableListView remove list item

我正在使用UWP Community Toolkit的SlidableListItem控件。 我在列表視圖中有一些靜態列表內容。 現在,在UWP Community Toolkit示例應用程序中,我僅找到控件的XAML,而沒有找到可以在控件中找到remove按鈕的事件處理程序的代碼文件。 我想在代碼文件中為RightCommandRequested="SlidableListItem_RightCommandActivated"寫一個事件,以便可以在列表視圖中刪除這些靜態項。

用於刪除ListView列表項的普通代碼在這里不起作用。 請問有人知道事件處理程序的代碼嗎?

現在,在UWP Community Toolkit示例應用程序中,我僅找到控件的XAML,而沒有找到可以在控件中找到remove按鈕的事件處理程序的代碼文件。

就在這里:

在此處輸入圖片說明

在官方示例中,它使用ObservableCollection作為ListView的項目源,而不是靜態List,使用它的好處是這是一個動態數據集合,當添加,刪除或刷新整個列表時提供通知。 。 因此,在此示例中,它只能綁定一個名為delegateCommand DeleteItemRightCommandSlidableListItem是這樣的:

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刪除項目, ListView的相關SlidableListItem也將被刪除。

現在來解決您的問題,如果您想使用RightCommandRequested="SlidableListItem_RightCommandActivated" ,可以,從右向左SlidableListItem_RightCommandActivated將觸發RightCommandRequested="SlidableListItem_RightCommandActivated" 問題是您的商品來源,它是一個靜態列表,以確保在列表更改時可以通知您的ListView ,您可以執行以下任一操作:

  1. 將您的靜態列表復制到ObservableCollection然后將此ObservableCollection綁定到ListViewItemsSource上,在您的SlidableListItem_RightCommandActivated事件中,刪除靜態列表和ObservableCollection

  2. 為您的靜態列表實現INotifyPropertyCanged接口。

順便說一句,你可以在該刷卡項目SlidableListItem_RightCommandActivated例如是這樣的:

private void SlidableListItem_RightCommandRequested(object sender, System.EventArgs e)
{
    var slidableitem = sender as SlidableListItem;
    var item = slidableitem.DataContext as Item;
}

如果您想演示,可以發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM