SORU
18 Ocak 2010, PAZARTESİ


MVVM Delilik: Komutları

MVVM seviyorum. Onu sevmiyorum, ama öyle. Çoğu mantıklı şeyler. Ama XAML yazın bir sürü kod yazmaya teşvik etmek ve arka planda herhangi bir kod yazmak zorunda değilsiniz makaleleri okumaya devam ediyorum.

Sana bir örnek vereyim.

Geçenlerde bir liste Görünümü MouseDoubleClickEvent benim ViewModel bir komut kargaburun istedim. Bunu yapmak için nasıl tam olarak emin değildim. Neyse ki, Google her şey için bir cevap var. Aşağıdaki makaleler buldum:

Çözümleri komutları anlamaya yardımcı olurken, bir sorun vardı. Bazı söz konusu çözümler WPF tasarımcısı bir ortak yüzünden kullanılamaz "" bağımlılık özelliği; WPF tasarımcısı bulamıyorum, ama CLR. sonra İç ekleme hack işlenen Bazı çözümler, aynı kontrol için birden fazla komut izin vermedi. Bazı çözümler parametreleri izin vermedi.

Birkaç saatlik deneme sonra sadece bunu yapmak için karar verdi:

private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
    ListView lv = sender as ListView;
    MyViewModel vm = this.DataContext as MyViewModel;

    vm.DoSomethingCommand.Execute(lv.SelectedItem);
}

, Titiz, bu sorunun ne olduğunu söyle lütfen MVVM? Hala Birim benim komut test edebilirsiniz. Bu çok pratik görünüyor, ama bu kılavuz aykırı gibi görünüyor "NEŞE... kod-arkasında kod var!!!!" Düşüncelerinizi paylaşın lütfen.

Şimdiden teşekkürler.

CEVAP
18 Ocak 2010, PAZARTESİ


Fay saflık gereksinimi yatıyor bence. Design patterns, MVVM dahil, araç kutusunda bir araç, aralarında bir son değil. Eğer daha mantıklı düşünülmüş bir durum için model (ve hiç kuşkusuz, bu durum kabul gibisin) saflığını bozmak ediyorsa, o zaman modeli ile kır.

Bu sizin için çalışır, ve aşırı bakım bir yük inanmıyorsan, o zaman hiçbir şey yaptığının yanlış olduğunu söylemek istiyorum. Açıkça bu saf MVVM bir uygulama olabilir şeye rağmen senin soruna makul bir çözüm olduğunu göstermek için ispat yükü ile tanıştınız sanırım.

(Bu argüman multiparadigm diller için argümanlar benzer düşünün. Saf OO bir yaklaşım uygulanabilir olsa da, bazen daha fonksiyonel bir şekilde bir şeyler yapmak daha uygundur. Saf Fonksiyonel bir yaklaşım uygulanabilir olsa da, bazen ticaret off OO teknikleri daha fazla değer olduğunu göstermektedir.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008