C# - 如何在 MVVM 中處理 XAML 鍵盤?

小林野夫發表於2024-03-18

輸入處理是 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

相關文章