0 Soru: Bu kodu MVVM modeline tam olarak uyarlamanın en doğru yolu nedir?

tarafından oluşturulan soru Wed, May 8, 2019 12:00 AM

Bir DataGridComboBoxColumn içeren bir DataGrid'im var. Her bir ComboBox aynı açılır listeye sahip olmalıdır: ComboBox'a girilen yeni değerler (ComboBox düzenlenebilir ve önceden bulunmamışsa, listeye yeni değeri eklemek için Enter tuşunu kabul eder). değerleri ve özel bir gri değer. Kullanıcı, geçerli sürümdeki gibi, veri kılavuzuna yeni satırlar ekleyebilmelidir.

ComboBox'taki öğeler BaseVM'den alınır ve BaseVM ve BaseM biraz daha senkronize edilir, daha kesin olarak BaseVM.ChildVMCollection ve BaseM.ChildMCollection. İki koleksiyonu senkronize etmek için daha basit bir yaklaşım bulmaya çalıştım ama başaramadım. ChildVM, ChildM'den ve BaseVM'den BaseM'den miras alınır.

Mümkünse MVVM modeline saygı duymak isterim (uzun vadeli esneklik yarattığını görüyorum).

Bir görünüm modeli fabrikasının kullanımını düşündüm, ancak bu örnek için basitlik için dışarıda bıraktım. Yapıcı ve atmalara yalnızca çağrılar kullanıyorum.

DataGridComboBoxColumn içindeki her bir açılır kutudaki her bir öğe için, her görünüm için bir tane olan (ComboBoxItem) bir ViewModel'e sahip olmam gerektiğini düşünüyorum ve bunun doğru şekilde uygulanmasını istiyorum. Diğer taraftan, ViewModel Modelini elde etmek için bir ViewModel Konumlandırıcısı uygulayabileceğimi düşünüyorum (bu sadece yukarıda belirtilen kodda bir döküm olmasına rağmen).

Belki soru buna devam eder:

Bir DataGrid'de, her ComboBox öğesinin ItemsSource değerini ayrı ayrı ayarlamanın en doğru yolu nedir, böylece içlerindeki her ComboBoxItem belirli bir ViewModel'e sahip mi?

Ben bir acemiyim. Bazı Wikipedia sayfalarını okuma listeme koydum:

  • Bağımlılık enjeksiyonu
  • Denetimin tersine çevrilmesi
  • Servis bulucu düzeni
  • Tek sorumluluk ilkesi
  • Arabirim ayrıştırma ilkesi
  • ve https://www.oodesign.com/
  • ve belki daha fazlası.

Şu anda bu öğreticiden geçiyorum. WinForms'ın kod gerisinde en fazlasını yapma yöntemine alışkınım.

Kodu, bu GitHub deposundaki daha doğru bir MVVM yolunda yeniden oluşturmaya çalışıyorum . Bu, bu soruyu içerisindeki güncellemenin bir devamıdır.

Kod çalışıyor, ancak çok esnek değil.

    
- 2
  1. evet, listelerdeki her öğenin INotifyPropertyChange uygulayan bir ViewModel olması gerekir
    2019-05-08 16: 05: 00Z
  2. Her ComboBox ayrı bir görünüm modeline ihtiyaç duymaz. Bu aşırı görünüyor. Her bağımsız Kontrol /Görünüm için bir ViewModel'e sahip olmalısınız; bu bir pencere, sayfa veya bağımsız olarak tasarlanmış herhangi bir kontrol olabilir. Her bir açılır kutunun, ana ViewModel'de yalnızca ilgili bir ObservableCollection olamaması için bir neden var mı?
    2019-05-08 16: 39: 55Z
  3. "Tamamlandı" olan çalışma kodu gerçekten SO-Sorular için hedef değil. Kod değişim ağını işleyen kod görünümlerini işleyen başka siteler de var - kendi kurallarını aldılar. Sorunuz çok geniş - bunun SO için uygun olduğunu mu düşünüyorsunuz?
    2019-05-08 16: 40: 13Z
  4. Kodunuzla ilgili bir soru soruyorsanız, lütfen sorunuza kodun minimal ama yeterli bir örneğini koyun Site dışı bağlantılar kesinlikle tavsiye edilmez, çünkü her zaman bir noktada biterler.
    2019-05-08 16: 47: 25Z
0 Yanıtlar                              0                         
kaynak yerleştirildi İşte