Freigeben über


Exemplarische Vorgehensweise: Anpassen der Textansicht

Sie können eine Textansicht anpassen, indem Sie eine der folgenden Eigenschaften in der Editorformatzuordnung ändern:

  • Indikatorrand

  • Einfüge-Caret

  • Überschreiben von Caret

  • Markierter Text

  • Inaktiver markierter Text (d. a. markierter Text, der den Fokus verloren hat)

  • Sichtbare Leerzeichen

Erstellen eines MEF-Projekts

  1. Erstellen Sie ein C#VSIX-Projekt. (Im Dialogfeld "Neues Projekt ", wählen Sie Visual C# / Erweiterbarkeit und dann VSIX-Projekt aus.) Benennen Sie die Lösung ViewPropertyTest.

  2. Fügen Sie dem Projekt eine Elementvorlage für Editorklassifizierer hinzu. Weitere Informationen finden Sie unter Erstellen einer Erweiterung mit einer Editorelementvorlage.

  3. Löschen Sie die vorhandenen Klassendateien.

Definieren des Inhaltstyps

  1. Fügen Sie eine Klassendatei hinzu, und nennen Sie sie ViewPropertyModifier.

  2. Fügen Sie die folgenden using-Anweisungen hinzu:

    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. Deklarieren Sie eine Klasse mit dem Namen TestViewCreationListener , die von IWpfTextViewCreationListener. Exportieren Sie diese Klasse mit den folgenden Attributen:

    • ContentTypeAttribute um den Inhaltstyp anzugeben, für den dieser Listener gilt.

    • TextViewRoleAttribute um die Rolle dieses Listeners anzugeben.

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

  4. Importieren Sie in dieser Klasse die IEditorFormatMapService.

    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Ändern der Ansichtseigenschaften

  1. Richten Sie die TextViewCreated Methode so ein, dass die Ansichtseigenschaften beim Öffnen der Ansicht geändert werden. Um die Änderung vorzunehmen, suchen Sie zuerst das, das ResourceDictionary dem Aspekt der Ansicht entspricht, die Sie suchen möchten. Ändern Sie dann die entsprechende Eigenschaft im Ressourcenwörterbuch, und legen Sie die Eigenschaften fest. Batchen Sie die Aufrufe der SetProperties Methode, indem Sie die BeginBatchUpdate Methode aufrufen, bevor Sie die Eigenschaften festlegen, und dann nach dem EndBatchUpdate Festlegen der Eigenschaften.

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

Erstellen und Testen des Codes

  1. Erstellen Sie die Projektmappe.

    Wenn Sie dieses Projekt im Debugger ausführen, wird eine zweite Instanz von Visual Studio gestartet.

  2. Erstellen Sie eine Textdatei, und geben Sie Text ein.

    • Das Einfüge caret sollte Magenta sein und das Überschreiben von Caret sollte türkis sein.

    • Der Indikatorrand (links neben der Textansicht) sollte hellgrün sein.

  3. Wählen Sie den eingegebenen Text aus. Die Farbe des markierten Texts sollte hell rosa sein.

  4. Während der Text markiert ist, klicken Sie auf eine beliebige Stelle außerhalb des Textfensters. Die Farbe des markierten Texts sollte dunkel rosa sein.

  5. Aktivieren Sie sichtbare Leerzeichen. (Auf der Menü "Bearbeiten ", zeigen Sie auf "Erweitert" , und klicken Sie dann auf " Leerzeichen anzeigen". Geben Sie einige Registerkarten im Text ein. Rote Pfeile, die die Registerkarten darstellen, sollten angezeigt werden.