[WPF] InputBinding и паттерн MVVM
От: Visor2004  
Дата: 17.07.10 18:56
Оценка:
Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: [WPF] InputBinding и паттерн MVVM
От: Codechanger Россия  
Дата: 18.07.10 10:40
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?


Ну, поскольку InputBindingCollection является readonly, то приходится писать attached properties, которые связывают содержимое коллекции во ViewModel с InputBindings контрола. Пишется все это быстро, к сожалению, сейчас кода под рукой нет, но гугл должен помочь.
Re[2]: [WPF] InputBinding и паттерн MVVM
От: Visor2004  
Дата: 18.07.10 15:16
Оценка:
Здравствуйте, 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?
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[3]: [WPF] InputBinding и паттерн MVVM
От: Аноним  
Дата: 18.07.10 19:03
Оценка:
Это вам поможет здесь
Re[4]: [WPF] InputBinding и паттерн MVVM
От: Visor2004  
Дата: 18.07.10 19:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Это вам поможет здесь


Спасибо за ссылку, интересный подход, но мне не подходит. у меня все команды определены во ViewModel и выставлены наружу как набор свойств. По ссылке демонстрируется подход к созданию команд с помощью расширения разметки. Меня же интересует как связать уже готовые команды с горячими клавишами.
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[3]: [WPF] InputBinding и паттерн MVVM
От: Codechanger Россия  
Дата: 19.07.10 05:45
Оценка:
Здравствуйте, 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/
Re: [WPF] InputBinding и паттерн MVVM
От: 3epo4 Россия  
Дата: 13.08.10 07:44
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?


Как вариант можно использовать библиотеку JulMar MVVM Helpers (http://mvvmhelpers.codeplex.com/)
Выглядеть привязка будет примерно так:

<Window.Resources>
    <julmar:BindableCommand x:Key="propsCommand" Command="{Binding ShowPropertiesCommand}"
                           CommandParameter="{Binding SelectedPicture}" />
</Window.Resources>
 
<Window.InputBindings>
    <KeyBinding Key="r" Modifiers="Ctrl+Alt" Command="{StaticResource propsCommand}" />
</Window.InputBindings>
wpf mvvm
Re[2]: [WPF] InputBinding и паттерн MVVM
От: Visor2004  
Дата: 13.08.10 08:44
Оценка:
Здравствуйте, 3epo4, Вы писали:

3>Здравствуйте, Visor2004, Вы писали:


V>>Здравствуйте, как вы связываете горячие клавиши и логику команд, определенных во ViewModel?


3>Как вариант можно использовать библиотеку JulMar MVVM Helpers (http://mvvmhelpers.codeplex.com/)

3>Выглядеть привязка будет примерно так:

3>
3><Window.Resources>
3>    <julmar:BindableCommand x:Key="propsCommand" Command="{Binding ShowPropertiesCommand}"
3>                           CommandParameter="{Binding SelectedPicture}" />
3></Window.Resources>
 
3><Window.InputBindings>
3>    <KeyBinding Key="r" Modifiers="Ctrl+Alt" Command="{StaticResource propsCommand}" />
3></Window.InputBindings>
3>


Спасибо Но уже проблема не актуальна.
Помните!!! ваш говнокод кому-то предстоит разгребать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.