我有一種情況,我需要處理按鍵事件,它可以是任何從A-Z,0-9,但我需要在ViewModel中處理。按下哪個鍵應該傳遞給ViewModel。我使用的是棱鏡6.0,所以View1ViewModel與視圖1自動連線。如何使用WPF中的Prism 6處理ViewModel中的按鍵事件?
我知道我可以處理特定的按鍵,但是如何對所有按鍵都做同樣的操作。
我在視圖模型「的keyPressed」的屬性,我試圖在代碼隱藏
private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
_mainWindowViewModel.KeyPressed = e.Key;
}
下面的代碼,但是這個代碼不更新View1ViewModel在棱鏡框架視圖模型和視圖綁定是通過該框架。 我試圖使用交互,我把下面的代碼放在根Grid
部分。
<i:Interaction.Triggers >
<i:EventTrigger EventName="KeyUp">
<i:InvokeCommandAction Command="{Binding KeyUpEventCommand}"
CommandParameter="..."/>
</i:EventTrigger>
</i:Interaction.Triggers>
該事件被觸發,但因爲沒有Command參數,所以它爲空。我需要傳遞一個commandParameter,但不知道它應該是什麼!
在視圖模型:
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屬性的setter不會被調用或什麼? – mm8
我已更新我的問題,KeyUpEventCommand被觸發,但它不包含按鍵的值。 – Debhere
視圖模型類中的KeyUpEventCommand是如何定義的? – mm8