在 MVVM 中綁定 WPF UI 事件(例如 SelectionChanged)到 ViewModel 指令
MVVM 模式提倡將 UI 邏輯與資料層分開。為此,在 ViewModel 中處理 UI 事件至關重要。在提供的程式碼範例中,SelectionChanged 事件在程式碼隱藏中處理。讓我們探討如何將此事件移至 ViewModel。
將 UI 事件綁定到指令
WPF 提供了一個強大的功能,稱為資料綁定。它允許您將 UI 元素綁定到 ViewModel 中的屬性或命令。在本例中,我們要將 contactsList 的 SelectionChanged 事件綁定到 ViewModel 中的指令。
使用 EventTriggers 和 InvokeCommandAction
為此,您可以使用 Windows.Interactivity 命名空間中的 EventTrigger 和 InvokeCommandAction。範例如下:
<code class="language-xml"><ListBox ...> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" /> </i:EventTrigger> </i:Interaction.Triggers> </ListBox></code>
引用 'i' 命名空間
要使用 EventTrigger 和 InvokeCommandAction,您需要參考 System.Windows.Interactivity 組件。開啟專案的「引用」面板,然後導覽至 新增參考 > 程式集 > 擴充。
將指令綁定到 ViewModel
在 ViewModel 中,建立一個公共命令來處理事件:
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; }</code>
將指令綁定到視窗的 DataContext:
<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
處理 SelectedItemChanged 事件
在 MyAppViewModel 中,實作 SelectedItemChangedCommand 並執行必要的邏輯,例如取得和分組標籤,就像在原始事件處理程序中一樣。
遵循這些步驟,您已成功地將 SelectionChanged 事件處理移至 ViewModel,從而遵循 MVVM 原則,將 UI 邏輯與資料層分開。
以上是如何將 WPF UI 事件(如 SelectionChanged)綁定到 MVVM 中的 ViewModel 指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!