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

北战南征 提交于 2019-12-08 04:21:35

问题


I have a navigation plugin which I want to extend to allow support for context navigation. I've got everything I need except for the NavigationOptions instance. In my INavigateFromHereProvider I get called with an IDataContext so can create the NavigationOptions from this using the NavigationOptions.FromDataContext method. Great.

In my context action I don't get called with a IDataContext, I get given a ICSharpContextActionDataProvider during construction. I can get my IDeclaredElement from this to base my navigation decision on, but I'm not sure how to create my NavigationOptions instance. It feels like I should be using NavigationOptions.FromWindowContext but I seems to need a PopupWindowContextSource and I don't know where to get one of these from.

So where can I get a relevant PopupWindowContextSource to create my NavigationOptions from?


回答1:


Ah, discovered the answer (well, an answer).

I can use this:

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

I'm not sure if this is the most appropriate thing to use, but it seems to work.




回答2:


You might be better off using NavigationOptions.FromDataContext. This will pull a window context from the IDataContext that you've already got. This should give you a popup window context that's appropriate to where you've been invoked from - anchored to the editor window, or the tree view, or whatever. Using the MainWindowPopupContext will give you a context that's based on the main Visual Studio window, which will likely work and be fine, but might not be the most relevant.



来源:https://stackoverflow.com/questions/31168095/how-do-i-get-a-window-context-so-i-can-create-navigationoptions-in-a-resharper-p

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!