Partager via


Procédure pas à pas : personnaliser l’affichage texte

Vous pouvez personnaliser une vue de texte en modifiant l’une des propriétés suivantes dans sa carte au format de l’éditeur :

  • Marge des indicateurs

  • Insertion de caret

  • Remplacer le caret

  • Texte sélectionné

  • Texte sélectionné inactif (autrement dit, texte sélectionné qui a perdu le focus)

  • Espace blanc visible

Créer un projet MEF

  1. Créez un projet VSIX C#. (Dans le Boîte de dialogue Nouveau projet , sélectionnez Visual C# / Extensibilité, puis VSIX Project.) Nommez la solution ViewPropertyTest.

  2. Ajoutez un modèle d’élément Classifieur d’éditeur au projet. Pour plus d’informations, consultez Créer une extension avec un modèle d’élément d’éditeur.

  3. Supprimez les fichiers de classe existants.

Définir le type de contenu

  1. Ajoutez un fichier de classe et nommez-le ViewPropertyModifier.

  2. Ajoutez les directives using suivantes :

    using System;
    using System.Collections;
    using System.Windows;
    using System.Windows.Media;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Text.Editor;
    using Microsoft.VisualStudio.Utilities;
    
  3. Déclarez une classe nommée TestViewCreationListener qui hérite de IWpfTextViewCreationListener. Exportez cette classe avec les attributs suivants :

    • ContentTypeAttribute pour spécifier le type de contenu auquel cet écouteur s’applique.

    • TextViewRoleAttribute pour spécifier le rôle de cet écouteur.

      [Export(typeof(IWpfTextViewCreationListener))]
      [ContentType("text")]
      [TextViewRole(PredefinedTextViewRoles.Document)]
      internal class TestViewCreationListener : IWpfTextViewCreationListener
      

  4. Dans cette classe, importez le IEditorFormatMapService.

    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Modifier les propriétés d’affichage

  1. Configurez la TextViewCreated méthode afin que les propriétés d’affichage soient modifiées lorsque la vue est ouverte. Pour apporter la modification, recherchez d’abord celui ResourceDictionary qui correspond à l’aspect de la vue que vous souhaitez rechercher. Ensuite, modifiez la propriété appropriée dans le dictionnaire de ressources et définissez les propriétés. Lotez les appels à la SetProperties méthode en appelant la BeginBatchUpdate méthode avant de définir les propriétés, puis après avoir EndBatchUpdate défini les propriétés.

    public void TextViewCreated(IWpfTextView textView)
    {
        IEditorFormatMap formatMap = FormatMapService.GetEditorFormatMap(textView);
    
        ResourceDictionary regularCaretProperties = formatMap.GetProperties("Caret");
        ResourceDictionary overwriteCaretProperties = formatMap.GetProperties("Overwrite Caret");
        ResourceDictionary indicatorMargin = formatMap.GetProperties("Indicator Margin");
        ResourceDictionary visibleWhitespace = formatMap.GetProperties("Visible Whitespace");
        ResourceDictionary selectedText = formatMap.GetProperties("Selected Text");
        ResourceDictionary inactiveSelectedText = formatMap.GetProperties("Inactive Selected Text");
    
        formatMap.BeginBatchUpdate();
    
        regularCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Magenta;
        formatMap.SetProperties("Caret", regularCaretProperties);
    
        overwriteCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Turquoise;
        formatMap.SetProperties("Overwrite Caret", overwriteCaretProperties);
    
        indicatorMargin[EditorFormatDefinition.BackgroundColorId] = Colors.LightGreen;
        formatMap.SetProperties("Indicator Margin", indicatorMargin);
    
        visibleWhitespace[EditorFormatDefinition.ForegroundColorId] = Colors.Red;
        formatMap.SetProperties("Visible Whitespace", visibleWhitespace);
    
        selectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.LightPink;
        formatMap.SetProperties("Selected Text", selectedText);
    
        inactiveSelectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.DeepPink;
        formatMap.SetProperties("Inactive Selected Text", inactiveSelectedText);
    
        formatMap.EndBatchUpdate();
    }
    

Générer et tester le code

  1. Générez la solution.

    Lorsque vous exécutez ce projet dans le débogueur, une deuxième instance de Visual Studio est démarrée.

  2. Créez un fichier texte et tapez du texte.

    • Le caret d’insertion doit être magenta et le caret de remplacement doit être turquoise.

    • La marge d’indicateur (à gauche de l’affichage texte) doit être verte.

  3. Sélectionnez le texte que vous avez tapé. La couleur du texte sélectionné doit être rose clair.

  4. Lorsque le texte est sélectionné, cliquez n’importe où en dehors de la fenêtre de texte. La couleur du texte sélectionné doit être rose foncé.

  5. Activez l’espace blanc visible. (Sur le Modifiez le menu, pointez sur Avancé , puis cliquez sur Afficher l’espace blanc). Tapez certains onglets dans le texte. Les flèches rouges qui représentent les onglets doivent être affichées.