2011-03-11 77 views
6

我創建了一個純粹的WPF的窗口在文本框綁定不工作

<TextBox Name="MyTextBox" 
     Focusable="True" Width="150" 
     Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"</TextBox> 

我的問題是有約束力的一個簡單的文本框,即墊層字符串屬性「MYTEXT」不更新在任何情況下。如果我鍵入空格字符,則屬性會更新。如果我通過剪貼板將文本粘貼到文本框中,則會更新屬性MyText。但是如果我輸入任何其他角色,什麼也不會發生。 爲了調試目的,我爲TextChanged註冊了一個事件處理程序。該事件僅適用於空格字符和粘貼操作,但不適用於其他字符。

關於我的環境的一些詞: WPF窗口可以被剝離到這個文本框。我從DLL裏面打開這個窗口。完整的項目針對的是.Net2,現在由於WPF的原因,已針對Framework 3.5。 我不知道如何讓這個更簡單的找到問題。

+0

您確定沒有綁定錯誤嗎?底層結構是什麼樣的?順便說一句......在你的代碼中有一個'>'錯過了。 – DHN 2011-03-11 07:45:45

+0

查看Visual Studio的「輸出」工具窗口。那裏顯示任何綁定錯誤? – Heinzi 2011-03-11 07:51:10

+0

不,沒有顯示綁定錯誤。剪貼板或空格字符的文本到達基礎屬性。 – Jens 2011-03-11 08:00:52

回答

5

你提到了Framework 2.0。如果您的應用程序基於Windows窗體,則應記住一些互操作主題。你有沒有打開的窗口之前試過如下:

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(YourWindowObject)

否則,試圖從一個WPF的應用程序打開的窗口。

1

默認情況下,綁定的模式是單向的。這意味着它默認從屬性加載,但不會設置。在你的綁定中添加「Mode = Twoway」(見代碼片段),看看這是否能解決你的問題。

<TextBox Name="MyTextBox" 
    Focusable="True" Width="150" 
    Text="{Binding MyText, Mode=Twoway, UpdateSourceTrigger=PropertyChanged}"> 
</TextBox>