Bu soru, bir this older bir sorusudur ve açık bir sorudan daha fazla bir onaydır.Hiyerarşik veri yapısındaki MVVM'ye düzenleme ekleme
ViewModel örneğim, Model'in _modelInst
özel bir örneğine sahiptir.
ViewModel, düzenleme sırasında Model verilerine özel erişim sunar (bu nedenle Modelin INotifyPropertyChanged uygulamasını uygulaması gerekmez). Alma
/Model örneğinde doğrudan ayar
örn:Şimdi üç yolu ben adlı model verileri nasıl düzenleneceği ile geldi vardır basit değer alanları
return _modelInst.fieldname;
_modelInst.fieldname = value;
için Bu seferki uygulanması kolay ...bir ViewModel örneğini oluşturma ve ebeveynin veri yapısı üzerinde faaliyet gösteren
örn o türü için yeni bir ViewModel oluşturma- : daha karmaşık nesne yapılar gibi türleri için.
ViewModel üst ve alan adını bilir. Bir ContentControl + DataTemplate - alma/ortamında o görüntüleyerek
- : Yalnızca bir alan değişse bile bütün orijinal nesneyi üzerine yazarak parametre olarak fieldname,
ile ebeveyn yöntemlerle
Bu, bu yapıların her biri için ebeveyn tarafından uygulanan yeni bir arabirim (
_modelInst
üzerinde çalışan güncelleme yordamları ile) oluşturmak anlamına gelir. ebeveynin veri yapısının doğrudan bilgiye sahip ViewModel örnekleri oluşturma- : daha karmaşık nesne yapılar gibi türleri için.
ör- komutlar aracılığıyla ebeveyne güncelleme talimatları gönderme her sınıf
için yeni ViewModel oluşturma ebeveyn sınıfları
içinde (listelerinde) sınıfları
- mesajlar
- yansıma için (ebeveyn, örneği karşılaştırarak hangi çocuğun
işlevini çağırdığını bilir
) kayıtlı tüm çocuklara Bunların hepsi için düzenlenebilir modelin her alanını oluşturma işlevleri uygulamak büyük bir karışıklık vardır.Bir her subobject onun üst ve onun bildiği tek başına yansıma yoluyla çalışan bir jenerik ViewModel, yaratabileceği
(4.) modelin hemen hemen tüm alanları anlamına
... alan adı (bir listede ise + indeksi).
Sadece kök mantığı daha sonra modele müdahale ederdi.
Ancak, bu çözüm yolun _modelInst
içinde bir alana kaydedilmesini de gerektirir.
Bunu başarmak için başka (daha basit) bir yol var mı?
MVVM prensiplerini yanlış anladım mı (tekrar)?
MVVM, büyük hiyerarşik veri yapılarının manipülasyonu için uygun mu?
için iCommand nesneleri uygulayan bir CustomerViewModel oluşturun. Ardından, Görünümünüz bu ICommand nesnelerine bağlanmalı ve siz Müşterinin türünde bir CommandParametre (büyük olasılıkla Görünümünüzde bir Yerden Bağlama) göndermelisiniz. –
Bu, düz bir yapı üzerinde iyi çalışır, örn. Müşterilerin bir listesi.Ama daha karmaşık bir ağaç hiyerarşisine sahip olursam, 'liste'irtibat kişisi gibi 'iletişim' iş dünyası, müşteri, özel 've' iş 'bir liste var '...? –
Her Model için ayrı bir ViewModel, evet? Türetilen sınıflar için, şunları deneyebilirsiniz: İş dünyası = İşletme olarak iletişim kur; if (iş! = null) [İşle İlgili Şeyler Yapın] ' –