如何获得 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 的上下文,它可能会工作并且很好,但可能不是最相关的。
我有一个 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 的上下文,它可能会工作并且很好,但可能不是最相关的。