Memanfaatkan Perintah Geganti untuk Seni Bina WPF MVVM yang Lebih Bersih
Dalam pembangunan WPF, mengasingkan View dan ViewModel ialah amalan terbaik. Walau bagaimanapun, hanya menggunakan sifat dengan NotifyPropertyChanged
selalunya menyebabkan pemisahan tidak lengkap, terutamanya mengenai pengikatan. Seni bina MVVM yang mantap mendapat manfaat daripada arahan untuk mengurus interaksi pengguna dan memisahkan UI sepenuhnya daripada logik asas.
Memahami Peranan RelayCommand
RelayCommand ialah pelaksanaan perintah yang membungkus logik pelaksanaan dengan kemas dan mendayakan/melumpuhkan elemen UI yang berkaitan. Pengasingan kebimbangan ini memudahkan ujian—membolehkan pengesahan bebas bagi UI dan logik perniagaan.
Kebolehgunaan Arahan yang Luas
RelayCommand terbukti serba boleh, mengendalikan pelbagai arahan UI seperti klik butang, perubahan input teks dan banyak lagi. Mengikat arahan pada kawalan UI secara berkesan memisahkan UI daripada pelaksanaan tindakan, membolehkan pencetus tindakan bebas.
Butang Bersyarat Membolehkan/Melumpuhkan
Butang melumpuhkan secara dinamik berdasarkan keadaan (cth., medan teks kosong) dicapai menggunakan predikat CanExecute
RelayCommand. Perwakilan ini menyatakan syarat; contohnya, menyemak sifat terikat null atau kosong. Keadaan butang yang didayakan secara automatik mencerminkan nilai pulangan CanExecute
.
Mempertingkatkan Pelaksanaan RelayCommand
Banyak pelaksanaan RelayCommand mengetepikan pembina terlebih beban dengan predikat CanExecute
. Pelaksanaan yang komprehensif harus merangkumi ini untuk kawalan penuh ke atas butang mendayakan/melumpuhkan.
Pelaksanaan Perintah Geganti yang Teguh
Berikut ialah pelaksanaan RelayCommand
yang dipertingkatkan yang menggabungkan pembina terlampau beban yang hilang:
<code class="language-csharp">public class RelayCommand<T> : ICommand { // Execution logic private readonly Action<T> _execute; // Enable/disable conditions private readonly Predicate<T> _canExecute; public RelayCommand(Action<T> execute) : this(execute, null) { } public RelayCommand(Action<T> execute, Predicate<T> canExecute) { _execute = execute; _canExecute = canExecute; } public bool CanExecute(object parameter) { return _canExecute == null || _canExecute((T)parameter); } public void Execute(object parameter) { _execute((T)parameter); } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } }</code>
Versi dipertingkat ini termasuk acara CanExecuteChanged
, memastikan kemas kini UI yang betul apabila keadaan berubah. Menggunakan RelayCommand
yang dipertingkatkan ini dengan ketara meningkatkan kejelasan dan kebolehselenggaraan aplikasi WPF MVVM anda.
Atas ialah kandungan terperinci Mengapa Menggunakan RelayCommand untuk Seni Bina MVVM WPF Bersih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!