пятница, 13 марта 2009 г.

Команды и MVVM (приложение 2)

Во втором случае нам надо явно задавать имя команды в XAML. Выглядит так
  1.     <UserControl.CommandBindings>
  2.         <CommandBinding:NamedCommandBinding Command="ApplicationCommands.Save" CommandName="Save" />
  3.     </UserControl.CommandBindings>
* This source code was highlighted with Source Code Highlighter.


А в презентере надо пометить методы для CanExecute и Execute соответствующими атрибутами. Выглядит вот так

  1.     public class BindToNamedCommandVM : INotifyPropertyChanged
  2.     {
  3.         [NamedCanExecute("Save")]
  4.         public bool SaveCanExecute(object obj)
  5.         {
  6.             return CanExecute;
  7.         }
  8.  
  9.         [NamedExecute("Save")]
  10.         public void SaveExecute(object obj)
  11.         {
  12.             LogItems.Add(Sum.ToString());
  13.             Sum = 0;
  14.         }
  15.         // Ну и что там еще у него есть
  16.     }
* This source code was highlighted with Source Code Highlighter.


С одной стороны явный минус в том, что появляются строки, в которых можно допустить ошибку. Но с другой стороны в презентере получается меньше кода (не надо заводить команду), и чисто теоретически можно объединить CanExecute для нескольких команд в один метод (просто навесив на него несколько атрибутов).

Комментариев нет:

Отправить комментарий

Постоянные читатели