Procédure pas - à - pas : personnaliser l'affichage de texte
Vous pouvez personnaliser un affichage de texte en modifiant les propriétés suivantes l'appropriées dans sa carte d'éditeur-format :
Marge des indicateurs
Signe insertion d'insertion
Signe insertion de remplacer
Texte sélectionné
Texte sélectionné inactif (autrement dit, texte sélectionné qui a perdu le focus)
l'espace blanc visible
Composants requis
Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010. Pour plus d'informations sur le kit de développement Visual Studio et à télécharger, consultez Centre pour développeurs d'extensibilité Visual Studio sur le site Web MSDN.
Créer un projet managé (MEF) managed extensibility framework
Pour créer un projet MEF
Créez un projet de classifieur d'éditeur c# ou du classifieur Visual Basic Editor. Nommez la solution ViewPropertyTest.
Ouvrez le fichier source.extension.vsixmanifest dans l'éditeur de manifeste VSIX.
Assurez -vous que le titre d' Content contient un type de contenu composant MEF et que le chemin d'accès est défini à ViewPropertyTest.dll.
Enregistrez et fermez le fichier source.extension.vsixmanifest.
Supprimez les fichiers de classe existants.
Définir le type de contenu
Pour définir un type de contenu
Ajoutez un fichier de classe et nommez-le ViewPropertyModifier.
Ajoutez les directives suivantes d' using (instructions d'Imports en Visual Basic).
Imports System Imports System.Collections Imports System.Windows Imports System.Windows.Media Imports System.ComponentModel.Composition Imports Microsoft.VisualStudio.Text.Classification Imports Microsoft.VisualStudio.Text.Editor Imports Microsoft.VisualStudio.Utilities
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;
Déclarez une classe nommée TestViewCreationListener qui hérite d' 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 d'écouteur.
<Export(GetType(IWpfTextViewCreationListener)), ContentType("text"), TextViewRole(PredefinedTextViewRoles.Document)> Friend Class TestViewCreationListener Implements IWpfTextViewCreationListener
[Export(typeof(IWpfTextViewCreationListener))] [ContentType("text")] [TextViewRole(PredefinedTextViewRoles.Document)] internal class TestViewCreationListener : IWpfTextViewCreationListener
Dans cette classe, importez IEditorFormatMapService.
<Import()> Friend FormatMapService As IEditorFormatMapService = Nothing
[Import] internal IEditorFormatMapService FormatMapService = null;
Modifier les propriétés d'affichage
Pour modifier les propriétés d'affichage
Implémentez la méthode d' TextViewCreated afin que les propriétés d'affichage sont modifiées lorsque la vue. Pour apporter la modification, recherchez d'abord ResourceDictionary qui correspondent à l'aspect de la vue que vous souhaitez rechercher. Modifiez la propriété appropriée dans le dictionnaire de ressources et définissez les propriétés. Traitement par lot les appels à la méthode d' SetProperties en appelant la méthode d' BeginBatchUpdate avant de définir les propriétés et de l' EndBatchUpdate après avoir défini les propriétés.
Public Sub TextViewCreated(ByVal textView As IWpfTextView) Implements IWpfTextViewCreationListener.TextViewCreated Dim formatMap As IEditorFormatMap = FormatMapService.GetEditorFormatMap(textView) Dim regularCaretProperties As ResourceDictionary = formatMap.GetProperties("Caret") Dim overwriteCaretProperties As ResourceDictionary = formatMap.GetProperties("Overwrite Caret") Dim indicatorMargin As ResourceDictionary = formatMap.GetProperties("Indicator Margin") Dim visibleWhitespace As ResourceDictionary = formatMap.GetProperties("Visible Whitespace") Dim selectedText As ResourceDictionary = formatMap.GetProperties("Selected Text") Dim inactiveSelectedText As ResourceDictionary = 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() End Sub
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ération et test de code
Pour 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 instanciée.
Créez un fichier texte et tapez du texte.
Le signe insertion d'insertion doit être magenta et le signe insertion de remplacer doit être turquoise.
La marge des indicateurs (située à gauche de l'affichage de texte) doit être verte claire.
Sélectionnez le texte que vous venez de taper. La couleur du texte sélectionné doit être rose-clair.
Pendant que le texte est sélectionné, cliquez n'importe où à l'extérieur de la fenêtre texte. La couleur du texte sélectionné doit être rose de sombres.
Activez l'espace blanc visible. (Dans le menu Edition, pointez sur Avancé puis cliquez sur L'espace blanc de vue). Tapez des onglets dans le texte. Les flèches rouges représentent des tabulations doivent être affichées.