RelayCommand dalam MVVM: Mempertingkatkan Pemisahan Logik UI
Dalam seni bina Model-View-ViewModel (MVVM), arahan adalah penting untuk memisahkan elemen UI daripada logik perniagaan dengan bersih. Corak RelayCommand menonjol sebagai alat yang sangat berkesan untuk mencapai pemisahan ini.
Faedah Utama Perintah:
Aplikasi RelayCommand:
1. Command Binding: Kawalan UI seperti Buttons dan MenuItems selalunya menampilkan Command
sifat pergantungan. Mengikat ICommand
(seperti RelayCommand) pada sifat ini membolehkan interaksi pengguna (cth., klik butang) untuk mencetuskan pelaksanaan perintah secara langsung.
2. Pengendalian Peristiwa melalui Pencetus Interaktiviti: Untuk acara yang tidak menyokong pengikatan perintah secara langsung, Pencetus Interaktiviti menawarkan mekanisme untuk memautkan acara kepada ICommand
kejadian.
Butang Dinamik Mendayakan/Melumpuhkan:
Untuk mendayakan atau melumpuhkan butang secara bersyarat berdasarkan kandungan kotak teks (cth., melumpuhkan jika kotak teks kosong), manfaatkan predikat CanExecute
dalam pembina RelayCommand. Predikat ini harus dinilai kepada true
hanya apabila syarat yang diperlukan dipenuhi. Pendekatan ini memastikan keadaan didayakan kawalan terikat mencerminkan keadaan semasa aplikasi.
Pelaksanaan RelayCommand Lengkap:
Kod berikut menyediakan pelaksanaan kelas RelayCommand
yang mantap dan lengkap:
<code class="language-csharp">public class RelayCommand<T> : ICommand { private readonly Action<T> _execute; private readonly Predicate<T> _canExecute; public RelayCommand(Action<T> execute, Predicate<T> canExecute = null) { if (execute == null) throw new ArgumentNullException(nameof(execute)); _execute = execute; _canExecute = canExecute ?? (_ => true); } public bool CanExecute(object parameter) => _canExecute == null || _canExecute((T)parameter); public event EventHandler CanExecuteChanged { add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value; } public void Execute(object parameter) => _execute((T)parameter); }</code>
Atas ialah kandungan terperinci Mengapa Menggunakan RelayCommand dalam MVVM untuk Pemisahan Logik UI yang Diperbaiki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!