SORU
28 Mart 2011, PAZARTESİ


Bir ViewModelLocator nedir ve DataTemplates göre eksileri/artıları nelerdir?

Birisi nasıl çalıştığını ve artılarını/eksilerini DataTemplates göre kullanmak için bana bir ViewModelLocator ne kısa bir özetini verebilir?

Google'da bilgi bulmaya çalıştım ama birçok farklı uygulamaları ve ne olduğunu ve bunu kullanmanın eksileri/artıları olarak striaght listesi var.

CEVAP
28 Mart 2011, PAZARTESİ


İntro

MVVM her zamanki pratik Görünümleri dependency injection (DI) bir kaba onları çözümleyerek kendi ViewModels bulmak için. Bu kabın (gidermek) View sınıfının bir örneğini sağlamak için sorulduğunda otomatik olarak gerçekleşir. Kapenjekte ederhangi bakış açısının yapıcı arayarak görünüme ViewModel ViewModel bir parametre kabul eder; bu düzeni denirkontrol çevirme(IoC).

Dİ faydaları

Ana parası burada konteyner yapılandırılabilirzamanındaondan talep ediyoruz türleri çözmek için talimatlar. Bu bizim uygulama aslında çalışırken kullandığımız türleri (Görüş ve ViewModels) gidermek için bildirerek, daha fazla test edilebilirlik için izin verir, ancak birim çalışırken farklı kılmasını uygulama testleri. İkinci vaka uygulaması bile var bir UI (değil çalışan; sadece testleri) çok kapsayıcı olacak gidermek mocks yerine "normal" tip kullanıldığında Uygulama çalışır.

Sorunları Dİ kaynaklanan

Şimdiye kadar Dİ yaklaşmak kolay test edilebilir uygulama bileşenleri oluşturulması üzerinde bir soyutlama katmanı ekleyerek uygulama için izin verdiğini gördük. Bu yaklaşım ile bir sorun var:iyi görsel tasarımcılar ile çalmıyorMicrosoft Expression Blend gibi.

Sorun hem normal Uygulama çalışır ve birim test çalışır, birisi olmasıdırYukarı ayarlayıngidermek için ne talimatları ile konteyner; ayrıca, birine sahiptirsorbu ViewModels onlara enjekte edilebilir, böylece Görünümleri gidermek için konteyner.

Ancaktasarım zamanında bizim çalışan kod yok. Tasarımcı yansıması anlamına gelir görüşlerimizi örneklerini oluşturmak için kullanmaya çalışır:

  • Görünüm kurucu ViewModel örneği gerektiriyorsa tasarımcısı bazı kontrollü şekilde çıkar -- hata Görünüm oluşturmak mümkün olmayacaktır
  • Eğer görünüme sahip bir parametresiz oluşturucu Görünümü olacak örneği, ama onun DataContext null Biz 'll bir "boş" görünümünde tasarımcısı olduğu için çok yararlı

ViewModelLocator Girin

Bu ViewModelLocator ek bir soyutlama böyle kullanılır:

  • resources onun bir parçası olarak bir ViewModelLocator kendisi başlatır ve arama ViewModel özelliği olan DataContext databinds Görünümü
  • Konumlandırıcı bir şekildeeğer tasarım ya algılar modu
  • Tasarım modunda, belirleyicisi yukarıda açıklandığı gibi Dİ kapsayıcı onu gideren bir ViewModel verir
  • Tasarım modunda, belirleyicisi döner sabit bir "eğer" ViewModel kendi mantığı kullanarak (unutmayın: tasarım zamanında konteyner yok!); kukla bu ViewModel genellikle kukla veri ile önceden doldurulmuş gelir

Tabii ki bu Görünüm ile başlamak için parametresiz bir kurucu (aksi tasarımcısı oluşturmak mümkün olmayacak) olması gerektiği anlamına gelir.

Özet

ViewModelLocator da senin kod iyi görsel tasarımcılar ile oynamak için izin verirken MVVM uygulamanızda Dİ yararları korumanı sağlayacak bir deyim vardır. Bazen denir, bu "blendability" uygulama (Expression Blend atıfta).

Yukarıdaki sindirerek sonra, pratik bir örnek here bkz.

Son olarak, veri şablonları kullanarak ViewModelLocator, ama UI parçaları için Görünüm/ViewModel açık çiftleri kullanmaya alternatif kullanmanın bir alternatifi değildir. Genellikle verileri bir şablon kullanabilirsiniz, çünkü bir ViewModel için bir Görünüm tanımlamak için gerek yok olduğunu görebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Boiler Room

    Boiler Room

    10 Mayıs 2012
  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012