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

时间:2016-06-23 15:52:58

标签: c# wpf wpf-controls vsix

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

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

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

嗯,除了TextBox行为....

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

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

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

此致

答案 1 :(得分:0)

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

  

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

请参阅以下帖子以获得解决方案:WPF modal window in Visual Studio Extension blocking input