Condividi tramite


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

  1. Creare un progetto di progetto di classificatore dell' editor c# o di classificatore di Visual Basic Editor. Assegnare alla soluzione ViewPropertyTest.

  2. Aprire il file source.extension.vsixmanifest nell' editor del manifesto VSIX.

  3. Assicurarsi che la direzione di Content contenga un tipo di contenuto componente MEF e che il percorso è impostato su ViewPropertyTest.dll.

  4. salvare e chiudere source.extension.vsixmanifest.

  5. Eliminare i file di classe esistenti.

Definizione del tipo di contenuto

Per definire un tipo di contenuto

  1. Aggiungere il file di classe e denominarlo ViewPropertyModifier.

  2. 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;
    
  3. Dichiarare TestViewCreationListener classe denominata che eredita da IWpfTextViewCreationListener. Esportare questa classe con gli attributi seguenti:

    <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
    
  4. 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

  1. Compilare la soluzione.

    Quando si esegue il progetto nel debugger, una seconda istanza di Visual Studio viene creata un'istanza.

  2. 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.

  3. Selezionare il testo digitato. Il colore del testo selezionato deve essere rosa-chiaro.

  4. Mentre il testo selezionato, fare clic in qualsiasi punto fuori della finestra del testo. Il colore del testo selezionato deve essere rosa scuro.

  5. 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.

Vedere anche

Concetti

Punti di estensione di editor