我正在为 Visual Studio 2017 开发一个扩展,其中包含自定义“toolwindow”。此“工具窗口”包含WPF control
订阅view model
了Workspace.WorkspaceChanged和EnvDTE.DTE.Events.WindowEvents.WindowActivated事件。
我知道当用户关闭“toolwindow”时,它实际上并没有被破坏,而是“隐藏”了。但是,它仍然对我的事件做出反应。
所以,我想知道两个问题的答案:
如何检查工具窗口是否被隐藏?
我可以“关闭”工具窗口以便将其销毁吗?
编辑:创建工具窗口的代码:
protected virtual TWindow OpenToolWindow()
{
ThreadHelper.ThrowIfNotOnUIThread();
// Get the instance number 0 of this tool window. This window is single instance so this instance
// is actually the only one.
// The last flag is set to true so that if the tool window does not exists it will be created.
ToolWindowPane window = Package.FindToolWindow(typeof(TWindow), id: 0, create: true);
if (window?.Frame == null)
{
throw new NotSupportedException("Cannot create tool window");
}
IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
return window as TWindow;
}
富国沪深
函数式编程
相关分类