2013-03-28 120 views
0

爲什麼在另一個TextBox中單擊不會引發當前(綁定)TextBoxLostFocus事件,從而將更改提交到數據源?我的UpdateSourceTrigger未設置,所以我假設默認情況下,WPF將在LostFocus上提交更改。LostFocus提交更改

當我使用Tab鍵而不是鼠標單擊來做同樣的事情時,我的更改得到了正確提交。

編輯

我剛發現點擊出現在同一個父容器確實引起LostFocusTextBox ES和提交的變化,但是當我點擊一個TextBox生活在我的屏幕主要ToolBar,那麼它似乎顯示出這種有問題的行爲。

EDIT 2

雖然我標誌着BastiOnWpf的職位如下正確的答案,我發現了一個同樣好或更好的解決方案來解決這個問題。解決方案是簡單設置

FocusManager.IsFocusScope="False" 

在您的ToolBar在XAML。

+0

您是否在視圖中以任何方式使用FocusManager? – blindmeis 2013-03-28 08:14:11

+0

@blindmeis:是的,但僅用於在加載時將初始焦點設置爲特定元素。另請參閱上面的我的編輯。 – dotNET 2013-03-28 08:59:23

回答

0

問題是,當文本框實際上確實如此,其實不是失去焦點,當菜單或其內容被點擊/聚焦。 這是因爲工具欄駐留在另一個UIContext中。

你當然可以改變UpdateSourceTriggerPropertyChanged,但是這並不總是可行的解決方法:

這裏有一些方法來解決這個問題: Binding with UpdateSourceTrigger==LostFocus do not fire for Menu or Toolbar interaction

這也是爲什麼綁定的原因工具欄到當前UI的ViewModel不起作用。

+0

謝謝你。這正是問題所在,儘管我發現了一個不同的和IMO更簡單的解決方案來解決這個問題。我在上面提到的網頁上發佈了我的解決方案,只是爲了幫助未來的讀者在一個地方找到它。我會將它標記爲答案,因爲它可以解決一般問題。 – dotNET 2013-03-28 11:33:25

+0

這是一個很好的解決方案。比那些更乾淨。 – Basti 2013-03-28 12:49:29