SORU
10 EYLÜL 2010, Cuma


WPF ile pencere kapatma olay işleme / MVVM Light Toolkit

İsterim kolu "Kapatma" olayı (ne zaman bir kullanıcı tıklama sağ üst " X " düğmesi) penceremde sipariş sonunda ekran bir teyit mesajı ve/veya iptal kapanış.

Kod-arkasında bunu nasıl yapacağımı biliyorum: "" pencerenin olay daha sonra "CancelEventArgs.kullanın Kapanış abone İptal" özelliği.

Ama iyi bir yaklaşım olduğundan emin değilim o yüzden MVVM kullanıyorum.

İyi yaklaşım benim ViewModel bir Komut için Kapanış olaya bağlamak olacağını düşünüyorum.

Bunu denedim :

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closing">
            <cmd:EventToCommand Command="{Binding CloseCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

Benim ViewModel ilişkili bir RelayCommand ile ama çalışmıyor (komut kodu yürütülmez).

CEVAP
24 Mayıs 2012, PERŞEMBE


Sadece Görünüm kurucu: işleyicisi ile ilişkilendirmek istiyorum

MyWindow() 
{
    // Set up ViewModel, assign to DataContext etc.
    Closing  = viewModel.OnWindowClosing;
}

Ekle ViewModel işleyici:

public void OnWindowClosing(object sender, CancelEventArgs e) 
{
   // Handle closing logic, set e.Cancel as needed
}

Bu durumda, daha fazla yönlendirme (artı komut desen XML 5 ekstra hat) ile daha ayrıntılı bir desen kullanarak karmaşıklığı dışında tam olarak hiç bir şey elde edersiniz.

"Code-behind" mantra kendi içinde amaç, konu bu değil . sıfır ^strong>ayrıştır Görünümü ViewModel. Olay Görünümü kod-arkada bağlı olsa bile, ViewModel Görünümü ve kapanış mantık bağlı değildirtest birimi olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • J Medema

    J Medema

    11 EKİM 2006
  • michellefeng's channel

    michellefeng

    26 Kasım 2006