procedura dettagliata: Personalizzare la visualizzazione di testo
È possibile personalizzare una visualizzazione di testo modificando uno dei seguenti proprietà nel mapping di editor-formato:
Margine indicatore
cursore di inserimento
sovrascrivere il cursore
testo selezionato
Testo selezionato inattivo (ovvero testo selezionato con perso lo stato attivo)
spazio vuoto visibile
Prerequisiti
Per completare questa procedura dettagliata, è necessario installare Visual Studio 2010 SDK. Per ulteriori informazioni su Visual Studio SDK e download, vedere Centro per sviluppatori di estensibilità di Visual Studio il sito Web MSDN.
Creare un progetto gestito Framework (MEF) di estensibilità
Per creare un progetto MEF
Creare un progetto di progetto di classificatore dell' editor c# o di classificatore di Visual Basic Editor. Assegnare alla soluzione ViewPropertyTest.
Aprire il file source.extension.vsixmanifest nell' editor del manifesto VSIX.
Assicurarsi che la direzione di Content contenga un tipo di contenuto componente MEF e che il percorso è impostato su ViewPropertyTest.dll.
salvare e chiudere source.extension.vsixmanifest.
Eliminare i file di classe esistenti.
Definizione del tipo di contenuto
Per definire un tipo di contenuto
Aggiungere il file di classe e denominarlo ViewPropertyModifier.
Aggiungere le seguenti direttive di using (istruzioni diImports in 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;
Dichiarare TestViewCreationListener classe denominata che eredita da IWpfTextViewCreationListener. Esportare questa classe con gli attributi seguenti:
ContentTypeAttribute per specificare il tipo di contenuto sul quale il listener viene applicato.
TextViewRoleAttribute per specificare il ruolo del listener.
<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
In questa classe, importare IEditorFormatMapService.
<Import()> Friend FormatMapService As IEditorFormatMapService = Nothing
[Import] internal IEditorFormatMapService FormatMapService = null;
modificare le proprietà di visualizzazione
Per modificare le proprietà di visualizzazione
Implementare il metodo di TextViewCreated in modo da modificare le proprietà di visualizzazione quando la visualizzazione è aperta. Per apportare la modifica, individuare prima ResourceDictionary che corrispondono all' aspetto della visualizzazione che si desidera trovare. Modificare la proprietà appropriata nel dizionario risorse e impostarne le proprietà. Vengono risolte nelle chiamate al metodo di SetProperties chiamando il metodo di BeginBatchUpdate prima di impostare le proprietà e quindi EndBatchUpdate dopo avere impostato le proprietà.
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(); }
Compilazione e test del codice
Per compilare e testare il codice
Compilare la soluzione.
Quando si esegue il progetto nel debugger, una seconda istanza di Visual Studio viene creata un'istanza.
Creare un file di testo e digitare un testo.
Il punto di inserimento deve essere magenta e il cursore di sovrascrivere deve essere turchese.
Il margine indicatore (a sinistra della visualizzazione di testo) deve essere verde chiaro.
Selezionare il testo digitato. Il colore del testo selezionato deve essere rosa-chiaro.
Mentre il testo selezionato, fare clic in qualsiasi punto fuori della finestra del testo. Il colore del testo selezionato deve essere rosa scuro.
Attivare lo spazio vuoto visibile. Da il menu di Modifica , il punto a Avanzate quindi fare clic su Mostra/Nascondi spazi). Digitare alcune schede nel testo. Le frecce rosse che rappresentano le schede da visualizzare.