我想知道如何取消订阅事件中的匿名方法。
我已经检查过Unsubscribe anonymous method in C#但我的情况略有不同。
我正在匿名方法中访问本地函数变量。
代码如下
private static void Test(Object dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
if (dependencyPropertyChangedEventArgs.OldValue is ObservableCollection<object>)
{
(dependencyPropertyChangedEventArgs.OldValue as ObservableCollection<object>).CollectionChanged -=
(s, e) => SelectedItemsChanged(dependencyObject, e); // TO FIX event unbsubscription via anonymous delegate
}
if (dependencyPropertyChangedEventArgs.NewValue is ObservableCollection<object>)
{
(dependencyPropertyChangedEventArgs.NewValue as ObservableCollection<object>).CollectionChanged +=
(s, e) => SelectedItemsChanged(dependencyObject, e);
}
}
最佳答案
您不能使用匿名委托(delegate)来做到这一点。 为了能够取消订阅,您必须使用通常委托(delegate)。
关于c# - 通过匿名委托(delegate)取消订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152635/