【问题标题】:Removing Event Handler Not Working in Windows 10 Universal App删除在 Windows 10 通用应用程序中不起作用的事件处理程序
【发布时间】:2015-08-07 15:06:54
【问题描述】:

您好,我有一个动态创建的点击按钮,它将在 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 一起触发。如何阻止这种情况?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 感谢@andreask 指出“您根本无法取消订阅匿名事件处理程序”。我是 Windows 开发的新手,所以不知道这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多