Bir ViewModelLocator nedir ve DataTemplates göre eksileri/artıları nelerdir? | Netgez.com
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

  • kidrauhl

    kidrauhl

    15 Ocak 2007
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011
  • YAN TV

    YAN TV

    20 EKÄ°M 2011