2009-05-06 138 views
1

我有處理我的控件的LostFocus事件的代碼。它驗證該值,並在某些情況下將啓用後續控制。例如,可能有一個ComboBox允許用戶選擇一個國家。隨後的組合框允許用戶選擇一個狀態。如果當前選擇的國家不是美國,則狀態組合框被禁用。如果用戶選擇「美國」,然後退出組合框,則LostFocus代碼啓用狀態組合框。但是,狀態組合框不會獲得焦點,而是將焦點轉移到狀態組合框後面的控件。WPF焦點問題

我試過使用PreviewLostKeyboardFocus來處理事件,而沒有運氣。我有點不知所措,想要破解WPF來完成這項工作。有什麼建議麼?

回答

1

嘗試驗證數據何時更改,而不是UI。您可以添加驗證規則,當從綁定更新屬性時會觸發驗證規則。然後,您可以使用樣式觸發器來激活有問題的控件。 Check this article它應該有所幫助。

+0

你能編輯這個答案嗎?鏈接已經死亡。 – 2017-02-01 21:25:33

1

我在猜測發生了什麼,它決定了在LostFocus事件觸發之前選項卡的控件,從而跳過狀態組合框,因爲它被禁用。以下是how focus works in WPF的信息。你想要做的是在你的處理程序中,確定它是否應該轉到下一個狀態組合框,並通過FocusManager類以編程方式聚焦該元素。