我正在为我们的开发团队(VSIX解决方案)编写Visual Studio扩展。当用户激活扩展时,他们会获得一个非常简单的WPF窗口的表单。使用以下代码加载窗口:
var myWindow = new SomeWpfWindow(myArgs)
{
Owner = Application.Current.MainWindow
};
myWindow.Show();
这将打开并显示用户填写的表单。表单中有许多TextBox,它们与DataContext进行双向绑定。没有什么不同寻常的。
嗯,除了TextBox行为....
当我在文本框中键入字符时("等等等等等),我看到文本框中显示这些字符,并且它们也会被写入他们被绑定到的DataContext属性
然而。当我按下后退空格或删除按钮时,TextBox中的文本保持不变,而是编辑后面的窗口(在本例中为活动代码文件)。不理想的行为......
我通过使用.ShowDialog()而不是.Show()来解决这个问题,但这是正确的解决方法,还是我只是埋没了问题?
由于
答案 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