У меня есть UserControl, который позволяет пользователю вводить данные. Я пытаюсь обеспечить, чтобы, когда фокус удаляется из пользовательского элемента управления, происходит проверка данных, и пользователь должен вернуться и исправить данные или отменить сделанные изменения.WPF User Control Losing Focus
Я пытался использовать usercontrol LostFocus, но это, кажется, вызывается каждый раз, когда пользователь перемещается между элементами управления внутри UserControl, а не только тогда, когда UserControl теряет фокус. Кроме того, похоже, что нет способа увидеть, куда сосредоточен фокус, и предотвратить потерю фокуса - то есть заставить пользователя вернуться и исправить ситуацию.
Я прихожу из фона Winforms, и этого было бы очень легко достичь, но я не вижу никакого простого способа сделать это в WPF.
Может кто-нибудь помочь?
P.S. Пример кода (который не работает ...)
private void UserControl_LostFocus(object sender, RoutedEventArgs e)
{
if (IsModified)
{
e.Handled = true;
btnSave_Click(this, e);
}
}
Вышеупомянутый вызывается всякий раз, когда элемент управления внутри пользовательского элемента управления потерял фокус. Поэтому, если пользовательский элемент управления говорит, что 3 текстовых поля, когда пользователь перемещается между ними, это событие вызывается каждый раз. Я хочу обработать событие только в том случае, если фокус удаляется из самого пользовательского элемента управления. Затем я хочу пригласить пользователя по строкам «Сохраните или отмените изменения, прежде чем удаляться от этой страницы». И только тогда, когда фокус перемещается в другую часть приложения, а не, например, если пользователь имеет ALT-Tabbed от приложения.
Это * не * что-то, что нам нужно сделать в WPF ... или вообще не так. Пожалуйста, взгляните на свойство '' Binding.UpdateSourceTrigger' '(http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger (v = vs.110) .aspx) на MSDN. – Sheridan
Как обычно на этом веб-сайте, вы можете обнаружить, что получите больше ответов, если будете следовать описаниям в [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) страницы [Справочного центра] (http://stackoverflow.com/help). Пожалуйста, добавьте [упрощенный пример вашего кода] (http://stackoverflow.com/help/mcve), который все еще четко демонстрирует вашу проблему. – Sheridan
Спасибо за это, но я уже посмотрел на эту область, и это не подходит для того, что я хочу, и я смущен вашим комментарием «это не то, что нам нужно делать в WPF». То, что я хочу сделать, не является чем-то необычным - данные передаются только после нажатия пользователем «Отправить». Это НЕ проблема. Проблема заключается в том, как запретить пользователю удаляться от элемента управления до тех пор, пока они не совершили или не отменили изменения. Итак, насколько мне известно, это не имеет никакого отношения к привязке данных, а к пользовательскому интерфейсу. –