Condividi tramite


Procedura dettagliata: Personalizzare la visualizzazione testo

È possibile personalizzare una visualizzazione testo modificando una delle proprietà seguenti nella mappa in formato editor:

  • Margine indicatore

  • Cursore di inserimento

  • Sovrascrivere il cursore

  • Testo selezionato

  • Testo selezionato inattivo(ovvero testo selezionato che perde lo stato attivo)

  • Spazi vuoti visibili

Creare un progetto MEF

  1. Creare un progetto VSIX C#. (In Finestra di dialogo Nuovo progetto , selezionare Visual C# / Estendibilità e quindi progetto VSIX. Assegnare alla soluzione ViewPropertyTestil nome .

  2. Aggiungere un modello di elemento classificatore dell'editor al progetto. Per altre informazioni, vedere Creare un'estensione con un modello di elemento dell'editor.

  3. Eliminare i file di classe esistenti.

Definire il tipo di contenuto

  1. Aggiungere un file di classe e assegnargli il nome ViewPropertyModifier.

  2. Aggiungere le direttive using seguenti:

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

    • ContentTypeAttribute per specificare il tipo di contenuto a cui si applica questo listener.

    • TextViewRoleAttribute per specificare il ruolo di questo listener.

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

  4. In questa classe importare .IEditorFormatMapService

    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Modificare le proprietà della visualizzazione

  1. Configurare il TextViewCreated metodo in modo che le proprietà di visualizzazione vengano modificate all'apertura della visualizzazione. Per apportare la modifica, trovare prima di tutto che ResourceDictionary corrisponde all'aspetto della visualizzazione che si desidera trovare. Modificare quindi la proprietà appropriata nel dizionario risorse e impostare le proprietà. Eseguire il batch delle chiamate al SetProperties metodo chiamando il BeginBatchUpdate metodo prima di impostare le proprietà e quindi EndBatchUpdate dopo aver impostato le proprietà.

    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();
    }
    

Compilare e testare il codice

  1. Compilare la soluzione.

    Quando si esegue questo progetto nel debugger, viene avviata una seconda istanza di Visual Studio.

  2. Creare un file di testo e digitare alcune parole.

    • Il cursore di inserimento deve essere magenta e la caret di sovrascrittura deve essere turchese.

    • Il margine dell'indicatore (a sinistra della visualizzazione 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 un punto qualsiasi all'esterno della finestra di testo. Il colore del testo selezionato deve essere rosa scuro.

  5. Attivare gli spazi vuoti visibili. (In Scegliere Avanzate dal menu Modifica e quindi fare clic su Visualizza spazi vuoti. Digitare alcune schede nel testo. Verranno visualizzate le frecce rosse che rappresentano le schede.