WPF TextBox事件TextChanged PreviewTextInput不会触发

时间:2017-05-02 10:33:55

标签: c# .net wpf event-handling

我从一所大学继承了一个更大的C#项目(他走了,所以我不能再问他了)。我在VS2012 + .Net4.6上 我在本项目中第一次将WPF文本框添加到非模态窗口。 问题是:我无法更改TextBox中的文本。

我发现的是以下事实:

  • TextBox不是只读
  • 我可以使用退格键和删除键,没有其他键
  • 使用粘贴的上下文菜单,复制剪切可以像预期的那样工作
  • 如果我打开窗口模式,我可以更改框中的文字
  • 如果我打开den窗口非模态我可以捕获事件PreviewKeyUp,PreviewKeyDown,KeyUp和KeyDown
  • 但是我无法捕获PreviewTextInput,TextInput(这是正常的)和TextChanged。
  • 当我从头开始创建WPF项目时,一切正常。

我们有一个自己的WPF-Window-Style,但是如果我在窗口中使用这种风格也没关系。

有人能告诉我在modal / nonmodal Windows中TextBoxes的行为有什么不同吗?你能不能给我一个提示,我可以在哪里寻找FromTheScratchProject和我们项目之间行为的修改?我能以某种方式调试事件处理吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您的项目似乎是WinForms / Win32和WPF的混合。

如果您以下列方式实例化您的窗口,您的非模态窗口将正确捕获键盘事件:

Window wpfWindow = new Window();
ElementHost.EnableModelessKeyboardInterop(wpfWindow);
wpfWindow.Show();