Genel sorumuz başlık durumları, ViewModel yapımı sırasında veya daha sonra bazı Yüklü olay işleme yoluyla veri yüklemek en iyisi mi?MVVM yükleme verileri?
Cevabın, yüklendikten sonra bazı Yüklü olay işleme yoluyla olduğunu tahmin ediyorum, ancak bunun ViewModel ile View arasında en iyi nasıl koordine edildiğini merak ediyorum. Ben DI Birlik yanı sıra MVVM Işık çerçevesini kullanıyorum
:
İşte benim durum ve özellikle sorun hakkında daha fazla detay Ben çözmeye çalışıyorum bu. İç içe geçmiş Görünümlerim var, her biri karşılık gelen bir ViewModel'e bağlı. ViewModels, her View'nin kök kontrol DataContext'e, Laurent Bugnion'un MVVM Light'e koyduğu ViewModelLocator fikri ile bağlanır. Bu, ViewModel'leri statik bir kaynak yoluyla ve Bağımlılık Enjeksiyon çerçevesi aracılığıyla ViewModels'in ömrünü kontrol etmeyi sağlar, bu durumda Unity. Ayrıca, Expression Blend'in ViewModels ile ilgili her şeyi görmesini ve bunları nasıl bağlayacağını sağlar.
Her neyse, ViewModel'de bir GözlemlenebilirKoleksiyona bir ComboBox veri yoluna sahip bir üst Görünümüm var. ComboBox'ın SelectedItem ayrıca ViewModel'deki bir özelliğe (iki yönlü) bağlıdır. ComboBox seçimi değiştiğinde, bu diğer görünümlerde ve alt gösterimlerde güncellemeleri tetiklemektir. Şu anda MVVM Light'da bulunan Messaging sistemi ile bunu gerçekleştiriyorum. Bu, ComboBox'ta farklı öğeleri seçtiğinizde harika ve beklendiği gibi çalışıyor. Ancak, ViewModel, yapım aşamasında bir dizi başlatma yöntemi çağrısı aracılığıyla verilerini alıyor. Bu, ComboBox'ın ilk SelectedItem'inin ne olduğunu kontrol etmek istiyorsam, sadece bir sorun gibi görünüyor. MVVM Light'ın mesajlaşma sistemini kullanarak, şu anda ViewModel'in SelectedItem özelliğinin ayarlayıcısının güncellemeyi yayınladığı yer ve kurucudaki mesaj için ilgilenen diğer ViewModels kayıtlarını oluşturdum. Görünüşe göre, şu anda SelectedItem'i ViewModel aracılığıyla inşaat zamanında ayarlamaya çalışıyorum; bu da ViewModels'in oluşturulmasına ve kaydedilmesine izin vermemiştir. ViewModel içindeki SelectedItem'in veri yüklemesini ve ilk ayarını koordine etmenin en temiz yolu ne olurdu? Gerçekten de, View'ın kod arkasındaki mantıklı olanı azarlamakla gerçekten uğraşmak istiyorum. ViewModel'ın bir şeylerin ne zaman yüklendiğini bilmesi için bir yola ihtiyacım olduğunu düşünüyorum ve daha sonra verileri yüklemeye ve kurulum aşamasını sonlandırmaya devam edebilirim.
Yanıtlarınız için şimdiden teşekkür ederiz.
Yüklenen olayınız, viewmodel'de bir yöntemi çağırmaz mı? – Klinger
Evet, yapabilirdim. Muhtemelen bunu düşünüyorum. Sanırım bununla ilgili tereddütlerim XAML’de şimdiye dek deklarasyon yapan her şeyi bağlayabildiğim. DataContext'i ayarladıktan sonra üye bağlantılarını tek bir yere ayarladım. Kontrolün Loaded olayının bir ViewModel yöntemine bağlı olmasıyla bunu XAML'de devam ettirmenin temiz bir yolu var mı? Tabii ki ViewModel'in de UI-spesifik olay işleme parametrelerine sahip olması gerektiğini düşünmüyorum. – mkmurray