删除事件处理程序在Windows 10 Universal App中不起作用

时间:2015-08-07 06:45:32

标签: xaml windows-store-apps windows-10 win-universal-app uwp

嗨,我点击了一个动态创建的按钮,它将在windows通用应用程序中下载视频,同时创建按钮,我在事件处理程序上分配如下:

 videoIcon.Click += (s, ev) => { Download_Video(s, ev, SomeStringParameter1, SomeStringParameter2); };

用户点击按钮后,在Download_Video中,我将删除事件处理程序以下载视频,如下所示:

 Button videoIcon = sender as Button;
 videoIcon.Click -= (s, ev) => { Download_Video(s, ev, videoUrl, messageId); };

并指定一个新的事件处理程序,点击相同的按钮播放视频,如下所示:

videoIcon.Click += (s, ev) => { Video_Click(s, ev, savedFile.Name); };

此问题先前已分配处理程序Download_Video也会与Video_Click一起触发。如何阻止这个?

1 个答案:

答案 0 :(得分:2)

据我所知,这与Windows 10无关。您无法取消订阅匿名事件处理程序,如this question所述。

相反,只需保留对委托的引用:

RoutedEventHandler handler = (s, ev) => { Download_Video(s, ev, videoUrl, messageId); };
videoIcon.Click += handler;
videoIcon.Click -= handler;