Wyobraź sobie: masz okno Master-Child składające się z listy elementów (okno główne) i zestawu kontrolek, w których możesz edytować aktualnie wybrany element (okienko podrzędne). Okno podrzędne ma przyciski "Zastosuj" i "Anuluj".WPF: Zatrzymywanie lub cofanie zmiany wyboru w polu listy
Użytkownik rozpoczyna edycję wartości. Następnie zmienia wybór, przed naciśnięciem przycisku "Zastosuj".
Twoja aplikacja wyświetla komunikat "Zastosuj zmiany do bieżącego elementu?", Z przyciskami "Tak", "Nie" i "Anuluj". Jeśli użytkownik naciśnie "Anuluj", próba zmiany bieżącego wyboru powinna zakończyć się niepowodzeniem.
Element "CurrentSelection" jest databoundem.
Pomyślałem, że poradzę sobie z tym w części "setera" w obiekcie CurrentSelection
. Jeśli użytkownik wybierze opcję "Anuluj", po prostu zatrzymam element CurrentSelection
w takiej postaci, w jakiej się znajduje, i wystrzeliwam powiadomienie o zdarzeniu PropertyChanged
, aby przekazać formularz do aktualizacji do poprzednio wybranego elementu. Kontrolka ignoruje to zdarzenie powiadomienia. (Co ma sens, Control mówi: "Wiem, że obecny wybór się zmienił, właśnie go zmieniłem!")
Jakieś pomysły, jak to naprawić? Podsumowując, kontrola próbuje zmienić oprawiony SelectedItem
i chcę powiedzieć "Nie, nie możesz teraz zmienić tego wybranego elementu".