使用以下内容tutorial在 VSIX 项目中,我创建了一个继承自 Microsoft.VisualStudio.PlatformUI.DialogWindow 的 WPF 窗口,并使用以下代码以模态方式显示此窗口:
var myWindow = new MyWindow(myParameters);
myWindow.ShowDialog();
当我在 RELEASE 模式下编译它并在不调试的情况下启动 [Ctrl+F5] 时,它会打开 Visual Studio 的实验版本。在这里,我打开另一个解决方案,然后执行我的模态窗口。该窗口工作得很好 - 我可以输入文本框等。
但是,当我关闭模式对话框窗口[使用 this.Close()] 时,问题就开始了。如果我导航到打开的解决方案中的文档之一,我可以键入,但键盘按钮退格键 [
另外,当我尝试关闭此实验版本的 Visual Studio 时,我收到以下消息:
Microsoft Visual Studio 检测到某个操作被阻止
用户输入。这可能是由活动模式对话框或任务引起的
需要阻止用户交互。你想关闭吗
反正?
但是,据我所知,当我关闭此 Visual Studio 实例时,我的模式窗口已关闭,甚至可能已被垃圾收集。
这并不限于实验版本 - 当我将此 VSIX 推送到我们的本地库并作为扩展安装时,我会得到相同的行为。
我也尝试过明确设置所有者,但他对这个问题没有影响:
var myWindow = new MyWindow(myParameters)
{
Owner = Application.Curent.MainWindow
}
myWindow.ShowDialog();
如果我将其设置为非模式窗口,那么我会遇到不同的(但相关的)问题。在这里,如果我打开 Visual Studio 的实验版本并打开另一个解决方案,我将在其中导航到 C# 页面。然后,我打开扩展程序的 WPF 窗口,我可以在该 WPF 窗口中的文本框中愉快地键入内容。但是,每当我单击退格键 [之前的一篇文章对此
我缺少什么?