0

Dans ma classe classificateur J'ai une méthode contenant le code ci-dessous:SDK Visual Studio - GetClassificationSpans ne soit pas appelé

var handler = ClassificationChanged; 
if (handler != null) 
{ 
     IVsTextManager textManager = (IVsTextManager)ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager)); 
     IVsTextView vTextView = null; 
     int mustHaveFocus = 1; 
     textManager.GetActiveView(mustHaveFocus, null, out vTextView); 
     IVsUserData userData = vTextView as IVsUserData; 
     if (userData != null) 
     { 
      IWpfTextViewHost viewHost; 
      object holder; 
      Guid guidViewHost = DefGuidList.guidIWpfTextViewHost; 
      userData.GetData(ref guidViewHost, out holder); 
      viewHost = (IWpfTextViewHost)holder; 
      IWpfTextView textView = viewHost.TextView; 
      ITextSnapshot textSnapshot = textView.TextSnapshot; 
      SnapshotSpan span = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length); 

      var eventArgs = new ClassificationChangedEventArgs(span); 
      handler(this, eventArgs); 
     } 
} 

Quand j'appelle ma méthode, GetClassificationSpans ne soit pas appelé. Je ne comprends pas pourquoi. Y a-t-il quelque chose que je fasse mal? Comment puis-je forcer Visual Studio à appeler GetClassificationSpans et à réappliquer des formats de classification au code lorsqu'aucune modification n'a eu lieu?

+0

'GetClassificationSpans' de quelle instance? Êtes-vous sûr qu'il s'applique à TextBuffer/ContentType? – SLaks

+0

@SLaks J'ai fait une erreur dans la première phrase. Cette méthode illustrée ci-dessus fait partie de ma classe ** classifier ** (implémentation de l'interface IClassifier) ​​et la méthode GetClassificationSpans est dans la même classe. –

+0

Êtes-vous sûr d'avoir le bon tampon? – SLaks

Répondre

0

J'ai regardé le TextBuffer comme SLaks suggéré et cela m'a conduit à la solution. J'ai une référence à mon classificateur ailleurs dans le code pour appeler ma méthode mentionnée dans la question. Cependant, il s'est avéré être une référence à un autre classificateur qui avait TextBuffer différent. Je me suis assuré que la référence était correcte et maintenant tout fonctionne correctement.