2016-09-24 70 views
0

我正在使用UWP社區工具包的SlidableListItem控件。列表視圖中有一些靜態列表內容。現在在UWP社區工具包示例應用程序中,我只找到控件的XAML,而不是代碼文件,我可以在該控件中找到刪除按鈕的事件處理程序。我想在RightCommandRequested="SlidableListItem_RightCommandActivated"的代碼文件中編寫一個事件,以便我可以刪除列表視圖中的這些靜態項目。UWP社區Tookit,SlidableListView刪除列表項

刪除ListView中的列表項的正常代碼在此處不起作用。請有人知道事件處理程序的代碼嗎?

+0

對不起,我只是拼錯了。我在談論'SlidableListItem'。謝謝 –

回答

3

現在在UWP社區工具包示例應用程序中,我只找到控件的XAML,但沒有找到控件中刪除按鈕的事件處理程序的代碼文件。

正是在這裏:

enter image description here

在官方樣片,它採用ObservableCollectionListView,而不是一個靜態列表中的項目源,使用這個的好處是,這是一個動態數據收集,當項目添加,刪除或整個列表刷新時提供通知。因此,在此示例中,它只綁定命名DeleteItemSlidableListItemRightCommand這樣的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); 
} 

正如你所看到的,只是將其從刪除的項目ObservableCollectionListView的相關SlidableListItem也將被刪除。

現在談到你的問題,如果你想使用RightCommandRequested="SlidableListItem_RightCommandActivated",沒關係,SlidableListItem_RightCommandActivated將從右向左滑動時觸發。問題是你的項目源,這是一個靜態列表,以確保您的ListView可以得到通知,當列表改變時,您可以:

  1. 您的靜態列表複製到一個ObservableCollection並綁定該ObservableCollection到的ItemsSourceListView,在您的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; 
} 

如果你想有一個演示,你可以發表評論。

+0

感謝您的詳細信息,實際上我將我的集合從'List'更改爲'ObservableCollection'並且我認爲我不應該使用'SlidableListItem_RightCommandRequested'而是使用您剛剛展示的DelegateCommand。但是在你的例子中有什麼'DelegateCommand'和'Item'?我沒有在我的代碼中得到它。 –