如何获取窗口上下文,以便我可以在resharper插件中创建NavigationOptions

时间:2015-07-01 17:38:08

标签: c# resharper resharper-plugins resharper-8.2

我想要扩展navigation plugin以支持上下文导航。除了NavigationOptions实例,我已经得到了我需要的一切。在我的INavigateFromHereProvider中,我使用IDataContext进行了调用,因此可以使用NavigationOptions方法从中创建NavigationOptions.FromDataContext。大。

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

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

2 个答案:

答案 0 :(得分:1)

啊,发现了答案(好吧,答案)。

我可以用这个:

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

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

答案 1 :(得分:0)

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