WPF窗口文本框 – 编辑文本会影响不同的窗口

我正在为我们的开发团队(VSIX解决方案)编写Visual Studio扩展。 当用户激活扩展时,他们会得到一个非常简单的WPF窗口的表单。 使用以下代码加载窗口:

var myWindow = new SomeWpfWindow(myArgs) { Owner = Application.Current.MainWindow }; myWindow.Show(); 

这将打开并显示用户填写的表单。表单中有许多TextBox,它们与DataContext进行双向绑定。 没有什么太与众不同了。

好吧,除了TextBox行为….

当我在文本框中键入字符(“blah blah blah”)时,我会在文本框中看到这些字符,并且它们也会被写入它们所绑定的DataContext属性。

然而。 当我按下后退空格或删除按钮时,TextBox中的文本保持不变,而是编辑后面的窗口(在本例中为活动代码文件)。 不理想的行为……

我通过使用.ShowDialog()而不是.Show()来修复此问题,但这是正确的修复,还是我只是埋没问题?

谢谢

VS并不真正了解你的窗口,你会遇到加速键和命令路由问题。

执行此操作的正确方法是实现模式对话框(请参阅我对您关于Microsoft.VisualStudio.PlatformUI.DialogWinodow的其他post的回复)。

或者你应该实现一个工具窗口。

此致

上面提供的解决方案解决了上述问题,但它不是完整的解决方案。 我发现,在关闭了我的WPF对话窗口后,我可以在打开的解决方案中键入C#窗口,但无法删除或返回空格以删除文本。 此外,当我尝试关闭Visual Studio时,它发出以下警告:

Microsoft Visual Studio检测到操作阻止了用户输入。 这可能是由活动模式对话框或需要阻止用户交互的任务引起的。 你想要关闭吗?

请参阅以下post以获得解决方案: Visual Studio Extension阻塞输入中的WPF模式窗口