Bagaimana ViewModel berkomunikasi dengan View-nya sendiri

Saya sedang mengembangkan aplikasi WPF MVVM Light, saya ingin menampilkan beberapa kotak pesan/kotak dialog atau ada beberapa skenario lain di mana saya ingin model Tampilan saya berkomunikasi dengan tampilannya atau memunculkan beberapa peristiwa pada tampilan masing-masing.

Bagaimana saya bisa mencapainya?


person manav inder    schedule 03.11.2012    source sumber


Jawaban (3)


Lihat kelas Messenger MVVM Light. Bahkan seharusnya ada sampel secara default saat Anda mengunduh lampu MVVM. Itu seperti Messenger.Default.Send(new YourMessageClass()) dan Anda dapat mendaftarkan pendengar di sisi View.

person Erti-Chris Eelmaa    schedule 03.11.2012
comment
Terima kasih atas balasan Anda, ya, berhasil. Tapi itu tidak konsisten. Saya memiliki layar pilih yang berisi tombol yang diikat ke perintah dalam model tampilan, saat mengklik tombol itu, perintah diaktifkan dan menggunakan metode Messenger.Default.Send dan 'layar pilih menerima pesan itu dan saya membuka layar CRUD dari pesan itu . Sekarang ketika layar CRUD mencoba mengirim pesan, pesan itu juga diterima oleh 'layar pilih' dan bukan 'layar CRUD. - person manav inder; 10.11.2012
comment
Ini berfungsi dengan baik sekarang, saya hanya perlu mengatur properti Token bersama dengan pesannya. - person manav inder; 17.11.2012


Tanggung jawab menampilkan popup seharusnya tidak menjadi tanggung jawab ViewModel, namun "layanan yang mengurusnya untuk Anda".

Jika "jendela popup" adalah jendela seperti modal seperti "dialog buka file", "dialog penyimpanan file", kotak pesan "ok/batal" atau "ya/tidak" dll, maka saya percaya bahwa "layanan" akan menjadi pilihan yang tepat. Alasannya adalah layanan dapat dipalsukan/diolok-olok untuk pengujian unit.

Selain itu, Anda dapat memiliki implementasi berbeda dari layanan ini berdasarkan apa pun yang Anda inginkan: di debug (r, ketika perannya bertipe admin atau pengembang) Anda memiliki lebih banyak informasi "verbose" daripada di rilis atau pengguna biasa, misalnya.

Sekarang, untuk "bagaimana ViewModel berkomunikasi dengan Tampilan", saya tidak yakin apa yang Anda maksud. Cukup tambahkan properti pada ViewModel dan ikat tampilan ke properti tersebut.

person Patrice Calvé    schedule 07.11.2012