現在在UWP社區工具包示例應用程序中,我只找到控件的XAML,但沒有找到控件中刪除按鈕的事件處理程序的代碼文件。
正是在這裏:
在官方樣片,它採用ObservableCollection
爲ListView
,而不是一個靜態列表中的項目源,使用這個的好處是,這是一個動態數據收集,當項目添加,刪除或整個列表刷新時提供通知。因此,在此示例中,它只綁定命名DeleteItem
爲SlidableListItem
RightCommand
這樣的delegateCommand:
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
將從右向左滑動時觸發。問題是你的項目源,這是一個靜態列表,以確保您的ListView
可以得到通知,當列表改變時,您可以:
您的靜態列表複製到一個ObservableCollection
並綁定該ObservableCollection
到的ItemsSource
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;
}
如果你想有一個演示,你可以發表評論。
對不起,我只是拼錯了。我在談論'SlidableListItem'。謝謝 –