如何获得 window 上下文以便我可以在 resharper 插件中创建 NavigationOptions

How do I get a window context so I can create NavigationOptions in a resharper plugin

我有一个 ,我想对其进行扩展以支持上下文导航。除了 NavigationOptions 实例之外,我已经拥有了我需要的一切。在我的 INavigateFromHereProvider 中,我用 IDataContext 调用,因此可以使用 NavigationOptions.FromDataContext 方法从中创建 NavigationOptions。伟大的。

在我的上下文操作中,我没有被调用 IDataContext,我在构建期间得到了 ICSharpContextActionDataProvider。我可以从中得到我的 IDeclaredElement 作为我的导航决定的基础,但我不确定如何创建我的 NavigationOptions 实例。感觉我应该使用 NavigationOptions.FromWindowContext,但我似乎需要一个 PopupWindowContextSource,但我不知道从哪里获得其中之一。

那么我从哪里可以获得相关的 PopupWindowContextSource 来创建我的 NavigationOptions

啊,找到答案了(嗯,一个答案)。

我可以用这个:

 var popupWindowContextSource = solution.GetComponent<MainWindowPopupWindowContext>().Source;

我不确定这是否是最适合使用的东西,但它似乎有效。

您最好使用 NavigationOptions.FromDataContext。这将从您已经获得的 IDataContext 中提取一个 window 上下文。这应该会为您提供一个弹出窗口 window 上下文,该上下文适用于您被调用的位置 - 锚定到编辑器 window 或树视图,或其他任何内容。使用 MainWindowPopupContext 会给你一个基于主要 Visual Studio window 的上下文,它可能会工作并且很好,但可能不是最相关的。