2011-03-11 91 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>