Ş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".