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
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
.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.
Supprimez les fichiers de classe existants.
Définir le type de contenu
Ajoutez un fichier de classe et nommez-le
ViewPropertyModifier
.Ajoutez les directives
using
suivantes :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.
Dans cette classe, importez le IEditorFormatMapService.
Modifier les propriétés d’affichage
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
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.
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.
Sélectionnez le texte que vous avez tapé. La couleur du texte sélectionné doit être rose clair.
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é.
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.