0

У меня есть следующая проблема с использованием MVVM Light с универсальным приложением в wp8.1. В моем конструкторе ViewModel в конструкторе я создаю простой RelayCommand с лямбдой вместо ссылки на метод. Проблема в том, что иногда, когда я перехожу на Рабочий стол по телефону, а затем обратно в приложение - Слабая ссылка исчезла. Я понимаю причину использования слабых ссылок, но я не понимаю, почему он удаляет, когда не выгружает View и ViewModel. То же самое происходит при возврате на страницу через Frame.GoBack. Даже без кэширования страниц (созданный тогда новый экземпляр) ссылка внезапно устанавливается на сбор.RelayCommand слабая ссылка с lambda

GoHomeCommand = new RelayCommand(() => 
     { 
      navigationService.NavigateTo("ScheduleChoicePage"); 
     }); 

<AppBarButton x:Uid="HomePage" Command="{Binding GoHomeCommand}"/> 

Кажется, что, используя ссылку на метод, а не лямбда - проблем нет.

ответ

0

Фактическое освобождение этой ссылки не относится к погрузке/разгрузке/навигации. Это всего лишь вопрос сборщика мусора. Нет сильных ссылок на эту лямбду, поэтому ее можно собрать в любое время после ее создания.

Решение не использовать lambdas при создании действий или хранить ссылку лямбда где-то в вашем объекте ViewModel.

Смежные вопросы