2012-08-23 28 views
0

我剛剛發現了一個問題的來源,這個問題在我一直在使用傳統的WinForms MDI和ElementHosts中託管的WPF UserControls的應用程序中發生爲每個表單。問題是,如果用戶更改雙向綁定到ViewModel屬性的TextBox中的文本,則單擊工具欄中的「保存」按鈕時,屬性上的設置器未設置。這種行爲的後果是沒有保存設置的最後一個文本設置。問題WPF在WinForms中託管的TextBox上的TwoWay數據綁定MDI

我使用的是LostFocus的默認UpdateSourceTrigger值,所以我相信發生的事情是當我點擊工具欄中的基於WinForms的保存按鈕時,WPF文本框元素不會失去焦點。所以,現在我明白了這個問題,我很好奇解決這個問題的正確或最好的方法。

我能想到的兩個主要選項要麼需要手動提示來更新設置程序而不會導致控件鬆動焦點或僅使TextBox鬆散焦點,以便正常的源更新發生。

+0

您可能會掛鉤到用戶控件的留下或失去焦點。 – Paparazzi

+0

我會考慮這樣做,但我相信這些事件不會觸發,因爲就WPF UI基礎結構而言,我仍然關注TextBox。 – jpierson

+0

我已經涉足了WPF中焦點範圍的實現,我並不期待看到它,因爲它可能是一個失敗的原因,但我想知道是否有什麼我可以觸發點擊這些按鈕時這將允許我以合理的方式手動轉移焦點? – jpierson

回答

0

您可以將UpdateSourceTrigger更改爲PropertyChanged,然後「保存」按鈕將很好地工作。

我認爲你的推理是正確的。 WPF和Winforms都有單獨的「Focusmanagers」,所以如果你從WPF文本框到winforms按鈕,那麼焦點無處可去。

+0

我的確想到了這個選項,儘管它會在數據綁定中引起更多的討厭,並且需要我們在系統中的所有文本框中設置它,我認爲這是不可接受的,因爲它是一個非常大的系統。 – jpierson