我有一个UserControl允许用户输入数据。我试图强制执行,当从用户控件中删除焦点时,会发生数据验证,用户必须返回并更正数据或取消所做的更改。WPF用户控件失去焦点
我试过用用户控件LostFocus,但是这似乎是每当用户在用户控件内部的控件之间移动时调用,而不是当用户控件失去焦点时。此外,看起来没有办法看到焦点转移到哪里,并防止失去焦点 - 即迫使用户回去并纠正事情。
我来自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中所做的事情”。我想要做的事情并不少见 - 只有在用户点击提交后才会提交数据。这不是问题。问题在于如何防止用户在提交或取消更改之前离开控制台。所以,尽我所能,看到这与数据绑定无关,而是UI控制。 –