Итак, у меня есть класс, который выглядит следующим образом:
public class EditorUserControl : UserControl
{
public EditorUserControl()
: base()
{
this.IsVisibleChanged += new DependencyPropertyChangedEventHandler(
EditorUserControl_IsVisibleChanged);
}
void EditorUserControl_IsVisibleChanged(
object sender,
DependencyPropertyChangedEventArgs e)
{
if (IsEditing && !((bool)e.NewValue))
{
PressedButton pressedButton = PromptUser(new Buttons[] {
"Save changes to the object you just edited?",
Buttons.Yes,
Buttons.No,
Buttons.Cancel });
if(pressedButton == Buttons.Cancel)
{
CANCELTHETHING();
}
}
}
}
На словах - этот класс является основой для всех элементов управления редактирования сущностей и когда он становится невидимым (например, окно закрыто, вкладка изменена)и т. д.) Мне нужно проверить, внес ли пользователь изменения, и попросить пользователя сохранить / отменить / отменить.Сохранить / отменить легко.Проблема связана с третьим вариантом (и он должен быть там) - я не могу найти способ, как я могу отменить исходное событие, которое вызвало изменение видимости (поскольку нет способа добраться до этого фактического события).Есть ли лучший способ реализовать эту функцию (для этого не нужно подписываться на все возможные источники событий)?