Ну, одно можно сказать наверняка
positionableSpriteRadioButton.IsAnswered -= new Action<bool>(Answers_IsAnsweredCompleted);
Это не сработает. Вы создаете новое Действие каждый раз. Таким образом, ничто не будет иметь такой же ссылочный идентификатор, и, следовательно, ничто не будет удалено.
Вместо этого вы должны удалить Action<bool>
и просто подписаться / отписаться с помощью
positionableSpriteRadioButton.IsAnswered -= Answers_IsAnsweredCompleted;
А при подписке
positionableSpriteRadioButton.IsAnswered += Answers_IsAnsweredCompleted;
Таким образом, вы действительно можете удалить его снова.
Но я бы порекомендовал вам не использовать опору для этого типа "мастера". Это злоупотребление контролем и очень плохое взаимодействие с пользователем.
Кроме того, то, что вы переходите на другую страницу, не означает, что код перестает работать. Весь код в том же выражении выполняется, если вы не добавите оператор return
после вызова NavigationService.Navigate
.
Кроме того, всегда проверяйте, что Navigation находится в потоке пользовательского интерфейса, заключая все вызовы в NavigationService.Navigate
в вызов Dispatcher.BeginInvoke
.