Да, ваш 2-й метод создает новую команду каждый раз, когда на нее ссылаются, но я также нахожу, что ваш 1-й метод довольно труден для чтения.
Мой предпочтительный способ сделать команду во ViewModel -
private LightCommand _deleteDocumentCommand;
public LightCommand DeleteDocumentCommand
{
get
{
if (_deleteDocumentCommand == null)
{
_deleteDocumentCommand = new LightCommand(
() => DeleteDocument(), () => CanDeleteDocument);
}
return _deleteDocumentCommand;
}
}
Это может быть больше строк кода, но его легко прочитать и понять. Кроме того, обычно все мои общедоступные свойства / команды создаются макросами и выгружаются в область #region Properties
, которая остается свернутой в течение всего времени работы с ViewModel, поэтому мне не нужно прокручивать страницы методов get / set.