При использовании связывания через команду (BindToICommand в примере).В xaml просто прописываем свой биндинг:
- <UserControl.CommandBindings>
- <CommandBinding:DataContextCommandBinding Command="ApplicationCommands.Save" />
- </UserControl.CommandBindings>
* This source code was highlighted with Source Code Highlighter.Соотв. задается только DataContextCommandBinding должен будет в презентере (что в данном случае является синонимом DataContext) найти команду, обслуживающую ApllicationCommand.Save.В презентере все выглядит примерно так
- public class BindToICommandVM : INotifyPropertyChanged
- {
- public DataContextCommand Save { get; set; }
-
- public BindToICommandVM()
- {
- // Какие-то действия в конструкторе
- Save = new DataContextCommand
- {
- BoundCommand = ApplicationCommands.Save,
- CanExecuteDelegate = x => CanExecute,
- ExecuteDelegate = x =>
- {
- LogItems.Add(Text);
- Text = "";
- }
- };
- }
- // Ну и что там еще у него есть
- }
* This source code was highlighted with Source Code Highlighter.Т.е. на каждую команду надо заводить свойство типа DataContextCommand и в конструкторе (или где-нибудь еще на раннем этапе) прописывать ему делегаты для Execute и CanExecute и командую, по которой DataContextCommandBinding поймет что это реализация именно той команды, которой ему надо. Естественно можно использовать и много команд в презентере и несколько DataContextCommandBinding.
Комментариев нет:
Отправить комментарий