2009-04-07 24 views
5

WPF uygulamasında temel MVVM modelini kullanmak istiyoruz. Bunu tartışıyorduk ve ViewModel/View ilişkisi ve doğrulama ile ilgili bazı belirsizlikler ortaya çıktı. Aşağıdakilerin iyi bir şekilde anlaşıldığını söyleyebilir misiniz?ViewModel/İlişkiyi göster ve doğrulama

  • Her Görünüm birine sahiptir ve sadece bir ViewModel ve ViewModel amacı veri ve sap onun görünümün olaylar ve komutların tümü ile kendi Görünüm sağlamaktır olduğunu. (Orada örnekler Are nerede bir ViewModel hizmetleri iki Görüntüleme, örneğin standart bir XAML giriş formu görünümü ve form olarak aynı verileri sağlar ve böylece aynı doğrulama sahip olması gerekir? CSV İthalat)

  • Doğrulama yalnızca işlenir örneğin ViewModel tarafından görünüşüdür bir ChangedFocus veya SaveButtonPressed etkinlik vb atar

  • model sadece veritabanından bir ya da daha fazla tablo göre veri yapısı, ancak olan modelin kendisi değil oldukça aptal Örneğin, doğrulama işlemini ele alın. Hatta, nesnelerin ObservableCollection'ı oluşturan ve tutan ViewModel'dir. "Müşteriler" ve Modelin kendisi değil.

Herhangi bir geri dönüş takdir edildi.

cevap

5

Her Görünüm birine sahiptir ve sadece bir ViewModel

Eğer desen sizin aşağıdakilerden hakkında katıysa Sonra her görünüm sadece bir ViewModel sahip olacağını düşünüyorum. İhtiyacımızın orta akışta değiştiği ve Görünüm referansının iki farklı ViewModeli olması en kolay olan uygulamada bir vakamız var. Deseni nasıl uyguladığınıza bağlı olarak bu mümkün olabilir veya olmayabilir.

orada örnekleri Are nerede bir ViewModel hizmetleri iki Görüntüleme

Evet, bu modelin avantajlarından biridir.

Doğrulama Mutlaka ViewModel

yalnızca tarafından ele alınır. Model sınıflarımızın IDataErrorInfo uygulamasını gerçekleştirmesini ve doğrulamayı kendisinin yapmasını seçtik. Bu, Model sınıfının nerede kullanıldığına bakılmaksızın validasyonun aynı olacağını garanti eder. Doğrulamanın değişmesi gerekiyorsa, sadece bir yerdedir.

Modeli

sadece olmasını istediğiniz kadar aptal olduğunu

oldukça aptal. İsterseniz doğrulama ve iş kurallarını modele dahil edebilirsiniz.

1

bir ViewModel hizmetleri iki Görüntüleme

tenli uygulamaları bu yeteneği kaldıraç olmamaihtimali örnekleri var.

Modeli

oldukça aptal ama modelin kendisi

modeli istediğiniz kadar akıllı olabilir doğrulama işlemez. Ve bütünlüğü sağlamak için "doğrulama" içerebilir, ancak bu doğrulama, kullanıcı arayüzünde bulunan iletileri içermez.

3

Yukarıda belirtilenlerin hepsine katılıyorum. Sadece bir yorum: görünüm modeliniz içerideki başka bir görünüm modelini kullanabilir. Bu yaklaşımı kullanarak görünümünüzü farklı görünüm modelleriyle sunulan iki bölgeye ayırabilirsiniz. Sadece ContentPresenter'ı kullanın, gerekli görünüm model özelliğine bağlayın (gerekli görünüm modelini alır) ve gerekli görünümü görünüm modelinizle ilişkilendirmek için DataTemplate'i kullanın.

+0

evet Bunu ViewModel'in ViewModels koleksiyonunun bulunduğu birçok örnekte gördüm, güzel hatırlatıcı, teşekkürler –

İlgili konular