jak uzyskać wybrany obiekt węzła połączenia w oknie VS Server Explorer DDEX
Dodałem kilka opcji węzła połączenia w eksploratorze serwera dla mojego rozszerzenia VS. Dla jednej z opcji menu, które dodałem, muszę uzyskać ciąg połączenia bardzo wybranego połączenia, więc spróbowałem tego, dodając kod w zdarzeniu BeforeQueryStatus, a także w metodzie obsługi poleceń. Ale wygląda na to, że brakuje mi czegoś, ponieważ za każdym razem, gdy chcę uzyskać wystąpienie DataViewHierarchyAccessor, zawsze otrzymuję wartość null. Chociaż jeśli robię to samo, ale w węźle niższego poziomu działa dobrze. Użyłem następującego kodu bez powodzenia:
IVsDataExplorerNodeSelection nodeSelection = (IVsDataExplorerNodeSelection) Package.GetGlobalService (typeof (IVsDataExplorerNodeSelection));
IVsUIHierarchy hierarchy = Marshal.GetTypedObjectForIUnknown (hierarchyPtr, typeof (IVsUIHierarchy)) jako IVsUIHierarchy;
Czy ktoś zrobił coś podobnego w węźle połączenia okna Eksploratora serwera?
Aktualizacja:
Wygląda na to, że mam pewne postępy w tym zakresie, właśnie spróbowałem:
EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
{
foreach (UIHierarchyItem selItem in selectedItems)
{
SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
string name = prjItem.Name;
}
}
Teraz moje pytanie brzmi: czy jest lepszy typ do rzucania listy wybranych elementów? zamiast EnvDTE.SelectedItem.
Z góry dziękuję.