Я хочу знать, как отменить анонимные методы из событий.Отказаться от подписки на анонимный делегат
Я уже проверил 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);
}
}
В каком случае ваш случай отличается? Вы просто не можете этого сделать - это не сработает. См. Также http://stackoverflow.com/questions/1348150/how-do-i-unregister-anonymous-event-handler. –
Разница в том, что мне нужно обеспечить доступ переменной к локальной функции. Как передать эту переменную, если я решил использовать именованный метод. – Tilak