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
Ä°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.
Uygulamanızda sql vs hesaplamaları ger...
Kullanıcı kimliği olarak e-posta adres...
Fs artıları ve eksileri nelerdir.vs fs...
Artıları ve eksileri appSettings olan ...
Scala yazın Lambda nedir ve faydaları ...