WPF TextBox不接受输入,空间和退格工作

Fel*_*lix 17 c# wpf

我在usercontrol中有文本框,我使用以下XAML将usercontrol添加到MainWindow:

 <Views:MyUserControl />
Run Code Online (Sandbox Code Playgroud)

我在MyUserControl中有一个TextBox,问题是TextBox不接受任何输入.退格键och空间有效,但是如果按下字母,则不会在TextBox中添加任何文本.

我确保文本不仅隐藏在TextBox中.我也尝试将RichTextBox添加到MyUserControl,结果相同,它不会接受任何输入(在space och backspace旁边).

我还尝试将一个TextBox添加到MainWindow,结果相同; 它不会采取任何输入(在太空och退格旁边).

MySuserControl也添加在TabControl和TabItem中.

有线索吗?

编辑:附加信息忘记写我正在从WinForm应用程序打开/创建WPF窗口.当我在VS10中将我的启动项目设置为我的WPF项目时,它可以很好地使用TextBox的键盘输入.

怎么会?

我用以下代码打开/创建我的WPF窗口:

MyWpfProject.MainWindow mw = new MyWpfProject.MainWindow();
mw.Show();
Run Code Online (Sandbox Code Playgroud)

编辑:解决方案所以我想我的真正问题是从WinForms应用程序打开WPf项目.

我添加了以下代码:

MyWpfProject.MainWindow mw = new MyWpfProject.MainWindow();
ElementHost.EnableModelessKeyboardInterop(mw);
mw.Show();
Run Code Online (Sandbox Code Playgroud)

"如果从非WPF主机(如WinForms)加载,则需要在WPF窗口中处理键盘输入."EnableModelessKeyboardInterop()调用是必需的." http://weblogs.asp.net/jdanforth/archive/2008/07/29/open-a-wpf-window-from-winforms.aspx

Fel*_*lix 43

回答我自己的问题(如果其他人遇到同样的问题):如果你从WinForms应用程序打开一个WPF表单,你必须执行以下操作来获得键盘输入:

MyWpfProject.MainWindow mw = new MyWpfProject.MainWindow();
ElementHost.EnableModelessKeyboardInterop(mw);
mw.Show();
Run Code Online (Sandbox Code Playgroud)

"如果从非WPF主机(如WinForms)加载,则需要在WPF窗口中处理键盘输入."EnableModelessKeyboardInterop()调用是必需的." http://weblogs.asp.net/jdanforth/archive/2008/07/29/open-a-wpf-window-from-winforms.aspx

  • 不要忘记添加WindowsFormsIntegration.dll作为参考. (4认同)
  • 如果您没有 winforms 窗口但有用户控件,您如何做到这一点? (2认同)