輸入處理是 View 關注點,而不是 ViewModel 關注點,為什麼要將其移動到 ViewModel 中?
相反,將應用程式/業務邏輯委託給 ViewModel,同時將鍵盤輸入處理保留在 View 中:
public partial class MainWindow : Window { private MyViewModel ViewModel; public MainWindow() { ViewModel = new MyViewModel(); } public void keyDownEventHandler(object sender, KeyEventArgs e) { if (e.Key == Key.LeftCtrl) ViewModel.PushToTalk = true; } public void keyUpEventHandler(object sender, KeyEventArgs e) { if (e.Key == Key.LeftCtrl) ViewModel.PushToTalk = false; } }
請注意我如何將屬性移動到 ViewModel,因為這實際上是應用程式邏輯的一部分,而不是 UI,同時將 Keyboard 事件保持在檢視級別。這不會破壞 MVVM,因為您沒有混合 UI 和應用程式邏輯,您只是將內容放置在它們真正屬於的位置。PushToTalk