我有一個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控制。 –