2009-09-17 27 views
6

Şunları düşünün: öğelerin bir listesini (Ana pencere) ve o anda seçili öğeyi düzenleyebileceğiniz bir denetim kümesinden oluşan Ana-Çocuk pencereniz var. Çocuk Penceresi). Alt pencerede "Apply" ve "Cancel" düğmeleri bulunur.WPF: Liste kutusundaki bir seçim değişikliğini durdurma veya geri çevirme

Bir kullanıcı değerleri düzenlemeye başlar. Daha sonra "Apply" düğmesine basmadan önce seçimi değiştirir.

Uygulamanız, düğmelerin "Evet", "Hayır" ve "İptal" olmak üzere "Geçerli öğeye değişiklikler uygula" mesajını görüntüler. Kullanıcı "İptal" e basarsa, mevcut seçimi değiştirme denemesi başarısız olur.

"CurrentSelection" öğesi databound.

Bu sorunu, CurrentSelection özelliğinin "ayarlayıcı" bölümünde ele alabileceğimi düşündüm. Kullanıcı "İptal" i seçerse, CurrentSelection öğesini olduğu gibi bırakıp, eski seçili öğeye geri dönmesini formu bildirmek için PropertyChanged bildirim olayını tetiklerim. Denetim bu bildirim olayını görmezden geliyor. (Bu mantıklı, Kontrol diyor ki "Mevcut seçim değişti biliyorum. Ben sadece değişti!")

Bunu nasıl düzeltebilirim? Özet olarak, denetim, SelectedItem no'lu bağı değiştirmeye çalışır ve bunu söylemek istiyorum ki "Hayır, şu anda bu seçili öğeyi değiştiremezsiniz".

cevap

1

Sadece test etmeden bir düşünce: özellik değiştirilen olayı ayrı bir iletide yükseltmeyi deneyin. Listede, özellik değerini değiştirirken muhtemelen herhangi bir bildirimi dikkate almamak için bir mandal vardır. Bildirimi içeren ayrı bir mesaj gönderiyorsanız, mandal sıfırlanmalı ve işlem yapmalıdır. Eğer hatıra desen arıyoruz gibi

İlgili konular