Membuka Windows Baharu dalam MVVM WPF: Pertimbangan Antara Muka
Semasa mencipta contoh tetingkap baharu dari dalam model paparan melanggar prinsip MVVM, ia adalah perkara biasa untuk melaksanakan antara muka untuk menghilangkan kerumitan membuka tingkap. Walau bagaimanapun, gandingan antara muka dengan jenis tetingkap tertentu, seperti ChildWindow, mengehadkan kefleksibelan.
Penyelesaian Antara Muka Generik
Untuk menangani isu ini, pertimbangkan antara muka yang lebih generik reka bentuk:
interface IWindowService { void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new(); }
Antara muka ini membolehkan anda menentukan jenis tetingkap sebagai parameter generik, membolehkan perkhidmatan untuk mengendalikan sebarang jenis tetingkap yang anda lalui.
Pelaksanaan WindowService
Pelaksanaan WindowService kemudiannya boleh menjadi:
class WindowService : IWindowService { public void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new() { var window = new TWindow(); window.DataContext = dataContext; window.Show(); } }
Lihat Penggunaan Model
Dalam model paparan anda, anda boleh menggunakan perkhidmatan untuk membuka tetingkap baharu sebagai diperlukan:
public void OpenChildWindowCommandExecute() { _windowService.OpenWindow<ChildWindow>(this); }
Kesimpulan
Pendekatan antara muka generik ini membolehkan anda mencipta dan membuka tetingkap baharu daripada model paparan tanpa melanggar prinsip MVVM. Ia memberikan fleksibiliti dengan mendayakan penggunaan mana-mana jenis tetingkap, memupuk penggunaan semula kod dan kebolehselenggaraan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuka Windows Baharu dalam Seni Bina MVVM WPF Tanpa Melanggar Prinsipnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!