Различные модификаторы для запуска разных команд на входных привязках WPF
Я столкнулся с проблемой, пытаясь понять, как запускать разные команды для разных клавиш-модификаторов при одном и том же действии мыши в WPF. Я разработал набор классов графов, в которых я пытаюсь позволить пользователю выбирать точки. Графический объект поддерживает список выбранных точек, и команды, когда передается точка в качестве параметра, должны либо выбирать только ту точку, которая была задана. (SelectPointCommand) или добавьте точку к текущему выделению (AddPointToSelectionCommand).
Я знаю, что я мог бы просто проверить Keyboard.Modifiers в коде, который запускается при выполнении команды, однако я бы предпочел предоставить функциональность на довольно высоком уровне, а не ограничивать ее определенными клавишами-модификаторами в самом графическом объекте, так что та же функциональность может быть легко запущена другими методами, например. нажимая кнопку
Я бы подумал, что будет работать следующий XAML (граница - это просто упрощение фактического шаблона данных, нет проблем с определением жеста мыши)
<Border DataContext="{Binding Point}">
<Border.InputBindings>
<MouseBinding Gesture="Ctrl+LeftClick" Command="{Binding Line.Graph.AddPointToSelectionCommand, Mode=Onetime}" CommandParameter="{Binding}" />
<MouseBinding Gesture="Shift+LeftClick" Command="{Binding Line.Graph.AddPointToSelectionCommand, Mode=Onetime}" CommandParameter="{Binding}" />
<MouseBinding Gesture="LeftClick" Command="{Binding Line.Graph.SelectPointCommand, Mode=Onetime}" CommandParameter="{Binding}" />
</Border.InputBindings>
</Border>
С помощью этого XAML MouseBinding для LeftClick срабатывает большую часть времени, независимо от того, какие клавиши-модификаторы удерживаются. Ctrl+LeftClick или Shift+LeftClick, кажется, срабатывают иногда, но не с каким-то конкретным шаблоном. Я попытался определить привязку мыши LeftClick на более высоком уровне (и на более низком уровне) в предположении, что привязка мыши LeftClick будет срабатывать только в том случае, если более конкретные привязки с модификаторами не сработали, но, похоже, не работают таким образом.
В более общем смысле возможно ли связать одно и то же действие мыши разными клавишами-модификаторами с разными командами? Я бы подумал, что более конкретные привязки или те, которые были определены ранее в XAML, сработали бы вместо более широких / более поздних определенных.