2016-03-29 26 views
0

WPF ve MVVM'de yeniyim ve model ve viewModel'i neye ihtiyacım olduğu konusunda biraz kafam karıştı. Uygulama, uygulama mantığının gövdesi olan, bağlantı noktalarını ve yuvaları dinleyen arka plan iş parçacıkları tarafından sürekli olarak oluşturulacak, imha edilecek ve güncelleştirilecek çeşitli özel sınıfların nesnelerinin bir koleksiyonunu içerecek bir "Dünya" nesnesine sahip olacaktır. . Nesnelerin bu koleksiyonu, sayfa gezintisinden bağımsız olarak uygulamanın yürütülmesi sırasında statik kalması ve özel sınıflardan erişilebilir olması ve kullanıcı arabiriminden düzenlenebilir olması gerekir ("dünya" durumuyla ilgili genel bakış için bir sayfa olacak) detaylı görünümler, nesnelerin ve konfigürasyonların düzenlenmesi için sayfalar.WPF ve MVVM modeli ve viewModel ayırma

Okuduğum kadarıyla, bu verileri model tarafından sağlanmalı, ViewModel bunu View'a hazırlamak için ona erişmelidir. Bu, kullanıcı tarafından görüntülendiğim veya düzenlenmesi gereken her "dünya" özel sınıfı için eşleşecek bir ViewModel olması gerektiği anlamına mı geliyor?

Kod örneklerine ve öğreticilere baktığımda, viewModels nesnelerinin XAML kodundaki görünümlere bağlı olduğunu ve söz konusu görünüm sayfasının yüklendiğinde (ve çıkışta yok edildiğinde) başlatıldığını görüyorum. Bu viewModel nesnesini, tüm verileri elde etmesi gereken ve UI giriş verisinin kaydedilmesi gereken belirli ve mevcut bir Model nesnesine nasıl bağlarım?

Özetlemek gerekirse:

  1. Dünya nesne toplama uygulaması start (app veya MainWindow kapsam) oluşturulur. Örneğin, sınıf Görev nesneleri oluşturulur.
  2. Görevler koleksiyonuna erişen ve bulduklarına bağlı olarak işleri yapan arka plan işlemleri başlatılır. (Ayrıca verileri değiştirebilir, bu yüzden değişiklikleri görüntülemek için model görünümünü bildirmelidir).
  3. GUI gezinti başlatıldı ve dinamik olarak, bu nesneler dünya nesnelerini görüntüleyen ve düzenleyen denetimler oluşturuldu. Örneğin, birden çok görevi yönetmek için kontrolleri görüntüleyin.

Model nesnelerini (ör. Belirli bir görev) viewModel ile nasıl bağlarım? XAML'de mi? viewModel'in arkasındaki kodda, her Model örneği için bir çeşit benzersiz tanımlayıcı ile? Denetimleri dinamik olarak codebehind'e eklerken, model nesne örneğini viewModel'e mi geçiriyorsunuz? Modelin de viewModel ve viceversa'daki değişiklikleri bildirmesinin en iyi yolu nedir?

Böyle bir durumu çözen bir kod örneğine yönelik herhangi bir yönlendirme veya referans için minnettar olurum. peşin

cevap

1

yılında

sayesinde her ViewModel modeliniz nesneyi ulaşabilecekleri bir hizmeti var - bkz mvvm services