MVVM?

2010-10-19 23 views
5

Eski uygulamalarımızdan biri VB.net (3 katmanlı) ile çalışıyor ve DataTable DTO olarak kullanılıyor. Ancak uygulamayı WPF, MVVM mimarisini kullanarak dönüştürmek istiyoruz. Datatable'ı DTO olarak kullanarak MVVM'yi uygulayabilir miyim veya bu veri tabanını temsil etmek ve MVVM mimarisini uygulamak için sınıflar oluşturmak zorundayım. ?MVVM?

cevap

2

MVVM'de, modeliniz olarak DataTable/DataSet kullanılmasını engelleyen hiçbir şey yoktur. MVVM'deki 'M' gerçekten herhangi bir şey olabilir. Açıkça tanımlanmış olan V ve VM. ViewModel'inizin, Görünümünüz ve temel DataRow'unuz için hareket halinde olmasını sağlayın. Modelinizin web hizmeti sınıfları oluşturulduğundan daha karmaşık olmamalı.

+0

k, thnx. Sınıfta INotifyPropertychanged'i uygulayabiliriz ve hatta çağrı arkalarını yazabiliriz, zorlama vb. Ancak Datatable veya DataRow'da değişiklik bildirimini nasıl tanımlayabiliriz? Bu soruyu sormamı istediğim de budur –

+0

DataTable'in kullanabileceğiniz bir RowChanged etkinliği var. Ama muhtemelen onu kullanmanıza gerek yok. ViewModel, PropertyChanged olaylarını gerektiği gibi yükseltebilir. ViewModel, DataRow'a giren ve çıkan verileri denetliyorsa, DataMow ViewModel altında çok fazla değişmemelidir. – Josh

1

MVVM'de anemik ve zengin model kullanma arasındaki farklara bakın. Anemik modelde; Bir datatable ile aldığınız şeydir, özellikleri uygular ve VM'nizdeki tüm INotify olaylarını bağlarsınız. Kendi iş nesnelerinizi oluşturmak veya CSLA gibi bir çerçeve kullanmak gibi zengin model rotasına giderseniz, modelinizden çok daha fazla işlem gerçekleştirirsiniz ve VM'niz çok daha küçüktür/daha basittir.