问题
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