Здравствуйте, Visor2004, Вы писали:
V>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?
Ну, поскольку InputBindingCollection является readonly, то приходится писать attached properties, которые связывают содержимое коллекции во ViewModel с InputBindings контрола. Пишется все это быстро, к сожалению, сейчас кода под рукой нет, но гугл должен помочь.
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, Visor2004, Вы писали:
V>>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?
C>Ну, поскольку InputBindingCollection является readonly, то приходится писать attached properties, которые связывают содержимое коллекции во ViewModel с InputBindings контрола. Пишется все это быстро, к сожалению, сейчас кода под рукой нет, но гугл должен помочь.
Я тоже пришел к выводу, что тут attached behavior самый лучший выход, но даже тут возникает вопрос, как лучше реализовать свойство делать, что-то типа такого: {x:Input Key=Ctrl+F, Command=(Binding Find)} или просто
{x:Input CommandSource={Binding}} и добавить InputGesture в свой класс DelegateCommand. Или реализовать оба этих подхода. Кстати в этом случае не придется всегда следить, чтоб в разметке это attached свойство всегда назначалось после назначения DataContext?
Здравствуйте, Аноним, Вы писали:
А>Это вам поможет здесь
Спасибо за ссылку, интересный подход, но мне не подходит. у меня все команды определены во ViewModel и выставлены наружу как набор свойств. По ссылке демонстрируется подход к созданию команд с помощью расширения разметки. Меня же интересует как связать уже готовые команды с горячими клавишами.
Здравствуйте, Visor2004, Вы писали:
V>Здравствуйте, Codechanger, Вы писали:
C>>Здравствуйте, Visor2004, Вы писали:
V>>>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?
C>>Ну, поскольку InputBindingCollection является readonly, то приходится писать attached properties, которые связывают содержимое коллекции во ViewModel с InputBindings контрола. Пишется все это быстро, к сожалению, сейчас кода под рукой нет, но гугл должен помочь.
V>Я тоже пришел к выводу, что тут attached behavior самый лучший выход, но даже тут возникает вопрос, как лучше реализовать свойство делать, что-то типа такого: {x:Input Key=Ctrl+F, Command=(Binding Find)} или просто V>{x:Input CommandSource={Binding}} и добавить InputGesture в свой класс DelegateCommand. Или реализовать оба этих подхода. Кстати в этом случае не придется всегда следить, чтоб в разметке это attached свойство всегда назначалось после назначения DataContext?
Самое лучшее — хранить в attached property коллекцию InputBinding. Во ViewModel соответственно иметь ее же.С моей точки зрения это наиболее универсальный подход, потому что позволяет привязать к модели хоть InputGesture, хоть MouseGesture, хоть любой другой InputBinding/
Здравствуйте, 3epo4, Вы писали:
3>Здравствуйте, Visor2004, Вы писали:
V>>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?
3>Как вариант можно использовать библиотеку JulMar MVVM Helpers (http://mvvmhelpers.codeplex.com/) 3>Выглядеть привязка будет примерно так:
3>