Ikat peristiwa UI pada arahan dalam ViewModel: perspektif MVVM
Apabila mengguna pakai seni bina MVVM (Model-View-ViewModel), cabaran biasa ialah cara mengasingkan acara UI daripada kod di belakang dan memindahkannya ke ViewModel untuk menambah baik pengasingan kebimbangan. Di sinilah pengikatan acara berlaku.
Memahami pengikatan acara
Secara tradisinya, acara UI dikendalikan secara langsung dalam kod belakang, yang selalunya menghasilkan kod spageti yang sukar dikekalkan. Pengikatan acara membolehkan kami mengikat acara UI kepada arahan dalam ViewModel, dengan berkesan menyahganding pembentangan UI daripada logik pengendalian acaranya.
Melaksanakan pengikatan acara
Dalam persekitaran WPF, anda boleh menggunakan kelas EventTrigger dan InvokeCommandAction dalam ruang nama System.Windows.Interactivity untuk melaksanakan pengikatan acara. Pertimbangkan contoh 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>
Anda membuat pengikatan pada SelectedItemChangedCommand dalam ViewModel dengan melampirkan EventTrigger pada acara SelectionChanged ListBox.
Pelaksanaan ViewModel
Dalam ViewModel anda, anda akan mentakrifkan sifat SelectedItemChangedCommand dan pelaksanaannya:
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; private set; } public MyAppViewModel() { // ... SelectedItemChangedCommand = new RelayCommand((param) => { /* 在此处处理选择更改逻辑 */ }); }</code>
Sistem Rujukan.Windows.Interaktiviti
Untuk menggunakan kelas EventTrigger dan InvokeCommandAction, anda perlu merujuk System.Windows.Interactivity.dll. Untuk melakukan ini, klik kanan projek anda dalam Visual Studio, pilih Tambah Rujukan, dan semak imbas ke tab Sambungan.
i awalan ruang nama
Awalan ruang nama i dalam pengikatan XML ialah singkatan "System.Windows.Interactivity". Apabila merujuk perhimpunan dalam projek anda, pastikan anda memasukkan ruang nama lengkap "clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity".
Dengan melaksanakan pengikatan acara dengan cara ini, anda berjaya mengasingkan acara UI daripada kod di belakang dan membenarkan penulisan kod yang lebih fleksibel dan lebih mudah untuk diuji. Pendekatan ini mematuhi prinsip seni bina MVVM dan menggalakkan organisasi kod bersih dan kebolehselenggaraan.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Peristiwa UI kepada Perintah dalam ViewModel MVVM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!