Почему WeakReferences в RelayCommand?

Недавно я обновил MVVMLight 3 до 4 и заметил, что мои команды не работают. Оказывается, что использование слабых ссылок в новом RelayCommand (реализованном в версии 3.5) приводило к сбою конструкции кода, которую я использую. Я знаю, что есть некоторые аргументы в пользу слабых ссылок, связанных с утечкой памяти, я просто неЯ не понимаю этого.

Это не удается:

private void InitCommand()
{
    Command = new SwitchMainGridCommand(this).Command;
}

Под неудачами я имею в виду, что когда я использую свойство Command, которое я инициализировал и связал, его методы поддержки были собраны сборщиком мусора, и команда не может быть выполнена. Интересно, что объект Command все еще присутствует, только свойства поддержки SwitchMainGridCommand теперь отсутствуют. До слабых ссылок в RelayCommand, ссылка на Command также поддерживала свойства поддержки, хотя SwitchMainGridCommand явно не сохранялся.

Это успешно:

SwitchMainGridCommand _refHolder = null;

private void InitCommand()
{
    _refHolder = new SwitchMainGridCommand(this);
    Command = _refHolder.Command;
}

Создание переменной класса _refHolder в ViewModel, в которой назначается команда, не позволит собирать методы / свойства, на которые ссылается _refHolder.Command.

Я предполагаю, что это желаемое поведение слабой ссылки, я просто не уверен, почему это желательно.

Ответы на вопрос(2)

Ваш ответ на вопрос