короткие клавиши для меню не работает в wpf в призме

1

Мое приложение разработано с использованием С# (WPF и Prism). В нем есть 4 проекта и разные регионы для каждого проекта:

  1. область меню содержит меню
  2. Регион рисования содержит чертежи
  3. Область дерева содержит вид дерева
  4. Статус Регион содержит вид satus

Я сделал привязку клавиш быстрого доступа к меню, и он отлично работает, но для этого мне нужно сначала выбрать заголовок меню, например, если я хочу открыть новое окно dashBoard на CTRL+N, сначала мне нужно выбрать " New меню" в строке меню. Если вы посмотрите на другие приложения, такие как Word, Notepad и т.д., Если вы нажмете CTR+N, он откроет новый файл, и вам не нужно будет переходить в новое меню.

Это связано с разной областью в призме?

В коде нет ничего плохого. Простой код привязки ввода выглядит примерно так:

    <UserControl.InputBindings>
        <KeyBinding Key="A"  Command="{Binding AddDashBoardCommand}">   
        </KeyBinding>
    </UserControl.InputBindings>    

Является ли это из - за того, когда я нажимаю короткие ключи m в различных районах n m, ожидающие другой регион, чтобы ответить? Какое решение для этого?

Теги:
wpf
prism

2 ответа

2
Лучший ответ

Исходя из моего понимания, это может быть связано с уделением особого внимания конкретному региону. Во всяком случае, возможным решением, которое будет работать, является использование Windows InputBindings вместо определения ShortKey в указанном регионе.

Таким образом, Input Binding будет действовать в любое время, когда вы сосредоточились на приложении Window, без необходимости открывать меню " New. Тем не менее, вам нужно будет учесть, что командная привязка будет работать в Shell ViewModel.

Итак, если вам нужно делегировать действие определенной модели ViewModel, вы можете опубликовать() Event через EventAggregator, значение которого будет зависеть от действия пользователя (NewWindowEvent, CopyEvent, SaveEvent,...). И поэтому каждая соответствующая ViewModel затем будет записывать конкретные события /s, что она будет знать только, как справиться с этим.

Вы должны иметь возможность использовать InputBindings с атрибутом модификаторов или без него.

С уважением.

  • 0
    да. ваш подход абсолютно правильный !! его работает большое спасибо !!
  • 0
    Я рад, что помогаю тебе. Я хотел бы, чтобы вы пометили ответ как правильный, чтобы новые поступающие люди с такой же проблемой знали, какой ответ был полезен. Спасибо за голосование.
1

Попробуйте использовать его, как показано ниже:

<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 уже используется для выбора всего текста.

  • 0
    это не то, что я хотел. Привязка - это хорошо, но проблема в фокусе, так как есть несколько областей. Я хочу, чтобы меню всегда было в фокусе, как меню Visual Studio или любого другого приложения. должно открыться новое окно для добавления панели инструментов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню