我有一个情况,需要处理按键事件,可以是 A-Z、0-9 中的任意一个,但我需要在 ViewModel 中处理。按下的键应该被传递到 ViewModel 中。我使用的是 Prism 6.0,所以 View1ViewModel 与 view1 自动关联。
我知道对于特定的按键,我可以进行处理,但如何处理所有按键呢?
在 ViewModel 中,我有一个名为“KeyPressed”的属性,我尝试在 code-behind 中使用以下代码:
但是,这段代码没有像Prism框架中的ViewModel和View绑定那样更新View1ViewModel。我尝试使用Interaction,将以下代码放置在根
事件已被触发,但由于没有命令参数,所以它的值为空。 我需要传递一个命令参数,但不知道应该是什么! 在ViewModel中:
有什么想法或建议可以处理这个问题吗?
我知道对于特定的按键,我可以进行处理,但如何处理所有按键呢?
在 ViewModel 中,我有一个名为“KeyPressed”的属性,我尝试在 code-behind 中使用以下代码:
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
_mainWindowViewModel.KeyPressed = e.Key;
}
但是,这段代码没有像Prism框架中的ViewModel和View绑定那样更新View1ViewModel。我尝试使用Interaction,将以下代码放置在根
Grid
部分中。<i:Interaction.Triggers >
<i:EventTrigger EventName="KeyUp">
<i:InvokeCommandAction Command="{Binding KeyUpEventCommand}"
CommandParameter="..."/>
</i:EventTrigger>
</i:Interaction.Triggers>
事件已被触发,但由于没有命令参数,所以它的值为空。 我需要传递一个命令参数,但不知道应该是什么! 在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
}
}
有什么想法或建议可以处理这个问题吗?