Tworzę pakiet Visual Studio (jest to mój pierwszy raz), a moim celem końcowym jest utworzenie elementu menu kontekstowego dla eksploratora rozwiązań, który tylko działa na niektórych typach plików. (Pomyślałem, że to normalne, ale nie znalazłem żadnych przyzwoitych tutoriali na ten temat, więc jeśli znasz jakieś, daj mi znać)Pakiet Visual Studio: Ustawia widoczność niestandardowego menu kontekstowego Eksploratora rozwiązań
Podążyłem za prostym przewodnikiem MSDN, aby najpierw utworzyć element na pasku narzędzi (Zapomniałem, gdzie jest link) i wszystko działało dobrze.
Następnie znalazłem sposób przeniesienia go do menu kontekstowego Eksploratora rozwiązań. Cel ten został osiągnięty poprzez manipulowanie plik .vsct
i posiadające element tak:
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE"/>
To chyba nie ma znaczenia, ale staram się ustawić scenę.
Teraz, ponieważ chcę pokazać element tylko dla niektórych typów plików, muszę znaleźć sposób na sprawdzenie pliku po naciśnięciu przycisku prawego przycisku myszy. Cięcia długich poszukiwaniach skrócie, found this i skończył z następującego kodu:
protected override void Initialize()
{
//stuff
OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
menuItem.BeforeQueryStatus += menuItem_BeforeQueryStatus;
//more stuff
}
void menuItem_BeforeQueryStatus(object sender, EventArgs e)
{
var myCommand = sender as OleMenuCommand;
myCommand.Text = "NEW NAME";
}
w powyższym przykładzie jestem po prostu próbuje ustawić tekst, aby spróbować udowodnić, że działa, wiem, że tam jest właściwością Visible
ale Chcę, aby ten krok był pierwszy. Zdarzenie BeforeQueryStatus
jest uruchamiane, a debugowanie pokazuje wykonanie kodu zgodnie z oczekiwaniami. Jednak nie ma zmiany w pozycji menu kontekstowego, pozostaje ona z oryginalnym tekstem.
Czego mi tu brakuje? Dlaczego nie aktualizuje?
Świetne znalezisko, jestem pewien, że to będzie bardzo przydatne dla innych też. – musefan
Z jakiegoś powodu te same guidy można znaleźć tutaj: Microsoft.VisualStudio.VSConstants.UICONTEXT. Znalazłem informacje na tej stronie. http://www.mztools.com/articles/2013/MZ2013027.aspx –