Мое приложение разработано с использованием С# (WPF и Prism). В нем есть 4 проекта и разные регионы для каждого проекта:
Я сделал привязку клавиш быстрого доступа к меню, и он отлично работает, но для этого мне нужно сначала выбрать заголовок меню, например, если я хочу открыть новое окно dashBoard на CTRL+N, сначала мне нужно выбрать " New
меню" в строке меню. Если вы посмотрите на другие приложения, такие как Word, Notepad и т.д., Если вы нажмете CTR+N, он откроет новый файл, и вам не нужно будет переходить в новое меню.
Это связано с разной областью в призме?
В коде нет ничего плохого. Простой код привязки ввода выглядит примерно так:
<UserControl.InputBindings>
<KeyBinding Key="A" Command="{Binding AddDashBoardCommand}">
</KeyBinding>
</UserControl.InputBindings>
Является ли это из - за того, когда я нажимаю короткие ключи m
в различных районах n
m
, ожидающие другой регион, чтобы ответить? Какое решение для этого?
Исходя из моего понимания, это может быть связано с уделением особого внимания конкретному региону. Во всяком случае, возможным решением, которое будет работать, является использование Windows InputBindings вместо определения ShortKey в указанном регионе.
Таким образом, Input Binding
будет действовать в любое время, когда вы сосредоточились на приложении Window, без необходимости открывать меню " New
. Тем не менее, вам нужно будет учесть, что командная привязка будет работать в Shell ViewModel.
Итак, если вам нужно делегировать действие определенной модели ViewModel, вы можете опубликовать() Event
через EventAggregator, значение которого будет зависеть от действия пользователя (NewWindowEvent, CopyEvent, SaveEvent,...). И поэтому каждая соответствующая ViewModel затем будет записывать конкретные события /s, что она будет знать только, как справиться с этим.
Вы должны иметь возможность использовать InputBindings
с атрибутом модификаторов или без него.
С уважением.
Попробуйте использовать его, как показано ниже:
<UserControl.InputBindings>
<KeyBinding Key="A" Modifiers="Control" Command="{Binding AddDashBoardCommand}">
</KeyBinding>
</UserControl.InputBindings>
Итак, используя выше (добавленное свойство Modifiers): shortcut Ctrl+A должен работать для команды Add Dashboard
.
BTW, я бы рекомендовал изменить ярлык Add Dashboard на Ctrl+D, поскольку Ctrl+A уже используется для выбора всего текста.