Привязка ключевого свойства привязки клавиш - PullRequest
2 голосов
/ 02 ноября 2011

Этот вопрос дает чистый метод для привязки ключа на уровне окна к команде ViewModel в XAML.Это довольно фантастично, но не позволяет настраивать используемый ключ.Можно ли привязать значение «ключа» к модели представления, и если да, то какой тип значения является «ключом» в csharp?

<Window.InputBindings>
<KeyBinding Key="{Binding RefreshKey}"
            Command="{Binding RefreshCommand}" />

Или возможнодобавить привязки клавиш на уровне окна в коде?У того же вопроса есть решение для помещения его в код, но я бы предпочел сохранить код в ViewModel, если это возможно.

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

http://msdn.microsoft.com/en-us/library/system.windows.input.keygesture.aspx

Для использования KeyGesture XAML свойство, обычно устанавливаемое в XAML, представляет собой Gesture, в тех случаях, когда жест представляет собой как стандартный ключ, так и ключ-модификатор

... Обратите внимание, что использование XAML напрямую не объявляет элемент.Использование этого элемента объекта невозможно, поскольку KeyGesture не предоставляет общедоступный конструктор по умолчанию.Вместо этого использование XAML использует поведение typeconverter для объявления всего встроенного KeyGesture в качестве значения атрибута Gesture.

Я думаю, что вы можете вернуть объект KeyGesture для привязки свойства Key или вы всегда можете вернуть составное свойствострока, и она будет автоматически преобразована

0 голосов
/ 02 ноября 2011

Тип свойства - это перечисление Ключ , поэтому оно должно быть достаточно простым, чтобы отобразить его в модели представления и связать с ним. Однако, как отмечено в вопросе, на который вы ссылались, поддержка привязок в KeyBinding не была добавлена ​​до WPF 4.

РЕДАКТИРОВАТЬ: не понимал, что вы просили способ вызова команды в результате нескольких нажатий клавиш. Пожалуйста, смотрите мой пост в блоге здесь , где обсуждается, как я решил эту проблему. Возможно, вам придется адаптировать его для WPF 4.

...