Ikat peristiwa UI WPF (cth. SelectionChanged) kepada arahan ViewModel dalam MVVM
Corak MVVM menyokong pengasingan logik UI daripada lapisan data. Atas sebab ini, adalah penting untuk mengendalikan acara UI dalam ViewModel. Dalam contoh kod yang disediakan, acara SelectionChanged dikendalikan dalam kod di belakang. Mari kita terokai cara mengalihkan acara ini ke ViewModel.
Ikat acara UI pada perintah
WPF menyediakan ciri berkuasa yang dipanggil pengikatan data. Ia membolehkan anda mengikat elemen UI pada sifat atau arahan dalam ViewModel. Dalam contoh ini, kami mengikat acara SelectionChanged contactsList kepada arahan dalam ViewModel.
Gunakan EventTriggers dan InvokeCommandAction
Untuk melakukan ini, anda boleh menggunakan EventTrigger dan InvokeCommandAction daripada ruang nama Windows.Interactivity. Contohnya adalah seperti berikut:
<code class="language-xml"><ListBox ...> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" /> </i:EventTrigger> </i:Interaction.Triggers> </ListBox></code>
Rujukan ruang nama 'i'
Untuk menggunakan EventTrigger dan InvokeCommandAction, anda perlu merujuk pemasangan System.Windows.Interactivity. Buka panel Rujukan projek dan navigasi ke Tambah Rujukan > Ikat arahan ke ViewModel
Dalam ViewModel, cipta arahan awam untuk mengendalikan acara:
Ikat arahan pada DataContext tetingkap:
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; }</code>
Mengendalikan acara SelectedItemChanged
<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
Dalam MyAppViewModel, laksanakan SelectedItemChangedCommand dan lakukan logik yang diperlukan, seperti mendapatkan dan mengumpulkan teg, sama seperti dalam pengendali acara asal. Dengan mengikut langkah ini, anda telah berjaya mengalihkan pengendalian acara SelectionChanged ke ViewModel, dengan itu mengikut prinsip MVVM dan memisahkan logik UI daripada lapisan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Peristiwa UI WPF (seperti SelectionChanged) kepada Perintah ViewModel dalam MVVM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!