У меня есть ситуация, когда мне нужно обрабатывать событие нажатия клавиши, это может быть любой из A-Z, 0-9, но мне нужно обработать это в ViewModel. Какой ключ нажат, следует пропускать через ViewModel. Я использую призму 6.0, поэтому View1ViewModel автоматически связан с представлением1.Как обрабатывать событие нажатия клавиши в ViewModel с использованием Prism 6 в WPF?
Я знаю, что для определенных ключей я могу справиться, но как сделать то же самое для всех ключей.
У меня есть свойство в ViewModel «Keypressed», и я попытался следующий код в код-за
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
_mainWindowViewModel.KeyPressed = e.Key;
}
Но этот код не обновляет View1ViewModel как в Prism рамочным ViewModel и просматривать связывание через рамки. Я попытался использовать взаимодействие, я поставил ниже код в корневой каталог Grid
.
<i:Interaction.Triggers >
<i:EventTrigger EventName="KeyUp">
<i:InvokeCommandAction Command="{Binding KeyUpEventCommand}"
CommandParameter="..."/>
</i:EventTrigger>
</i:Interaction.Triggers>
Событие активируется, но поскольку параметр команды отсутствует, его значение равно нулю. Мне нужно передать commandParameter, но не знаю, что это должно быть!
В ViewModel:
public DelegateCommand KeyUpEventCommand { get; private set; }
private string strAlphabet;
public string Alphabets
{
get { return strAlphabet; }
set { SetProperty(ref strAlphabet, value); }
}
public MainWindowViewModel(IEventAggregator eventAggregator)
{
KeyUpEventCommand = new DelegateCommand(KeyUpEventHandler);
}
public void KeyUpEventHandler()
{
//This logic can be changed
if (Alphabets == "A")
{
// Perform some action
}
if (Alphabets == "B")
{
// Perform some other action
}
}
Любые идеи/предложения, как я могу справиться с этим?
Что именно "не обновлять View1ViewModel" означает? Что происходит? Возникает ли обработчик события PreviewKeyUp, но не задан или нет какой-либо установщик свойства KeyPressed модели представления? – mm8
Я обновил свой вопрос, KeyUpEventCommand уволен, но он не содержит значения нажатия клавиши. – Debhere
Как точно определяется класс KeyUpEventCommand в классе модели представления? – mm8