WPF window 文本框 - 编辑文本影响不同 window

WPF window textbox - editing text affects different window

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

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

这将打开并显示一个用户填写的表单。该表单有很多 TextBox,它们经过双向绑定到 DataContext。没什么特别的。

好吧,除了 TextBox 行为之外......

当我在文本框 ("blah blah blah") 中键入字符时,我会看到这些字符显示在文本框中,并且它们还会写入到它们绑定到的 DataContext 属性 中。

不过。当我按下后退-space 或删除按钮时,TextBox 中的文本保持不变,而是编辑后面的 window(在本例中为活动代码文件)。不理想的行为....

我使用 .ShowDialog() 而不是 .Show() 解决了这个问题,但这是正确的解决方法,还是我只是掩盖了问题?

谢谢

VS 并不真正了解您的 window,您会 运行 遇到加速键和命令路由方面的问题。

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

或者您应该实施一个工具window。

此致,

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

Microsoft Visual Studio has detected that an operation is blocking user input. This can be caused by an active modal dialog or a task that needs to block user interaction. Would you like to shut down anyway?

请参考以下post解决方法: