Freigeben über


Exemplarische Vorgehensweise: Die Text-Ansicht anpassen

Sie können eine Textansicht anpassen, indem Sie eine der folgenden Eigenschaften im Editor FORMAT-Karte ändern:

  • Indikatorrand

  • Einfügen caretzeichen

  • Setzen Sie die Einfügemarke

  • Markierter Text

  • inaktiv - von markiertem Text (d. h. von markiertem Text, der Fokus verliert)

  • Sichtbare Leerstellen

Vorbereitungsmaßnahmen

Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie Visual Studio 2010 SDKinstallieren. Weitere Informationen über das Herunterladen und das Visual Studio-SDK finden Sie Visual Studio Extensibility Developer Center auf der MSDN-Website.

Ein Projekt des Managed Extensibility Framework (MEF)

So erstellen Sie ein MEF-Projekt

  1. Erstellen Sie ein C#-Editor-Klassifizierungs projekt- oder Visual Basic-Editor-Klassifizierungs enthält. Geben Sie der Projektmappe ViewPropertyTest.

  2. Öffnen Sie die Datei source.extension.vsixmanifest im VSIX-Manifest-Editor.

  3. Überprüfen Sie, ob die Content Überschrift einen MEF-Komponenten-Inhaltstyp enthält und dass der Pfad zu ViewPropertyTest.dll festgelegt ist.

  4. Speichern und schließen Sie source.extension.vsixmanifest.

  5. Löschen Sie die vorhandenen Klassendateien.

Definieren des Inhaltstyps

So definieren Sie einen Inhaltstyp

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

  2. Fügen Sie die folgenden using-Direktiven hinzu (Imports-Anweisungen 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. Deklarieren Sie eine Klasse, die von TestViewCreationListenerIWpfTextViewCreationListenererbt. Exportieren Sie diese Klasse mit den folgenden Attributen:

    <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 dieser Klasse importieren Sie IEditorFormatMapService.

    <Import()>
    Friend FormatMapService As IEditorFormatMapService = Nothing
    
    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Die Ansichts-Eigenschaften ändern

So ändern Sie Eigenschaften anzeigen

  • Implementieren Sie die TextViewCreated-Methode, damit die Eigenschaften geändert werden, wenn die Ansicht geöffnet ist. Um die Änderung vorzunehmen, finden ResourceDictionary, die dem Aspekt der ersten Ansicht entspricht, die Sie suchen möchten. Anschließend ändern Sie die entsprechende Eigenschaft im Ressourcenwörterbuch, und legen Sie die Eigenschaften fest. Batch die Aufrufe an die SetProperties-Methode durch Aufrufen der Methode BeginBatchUpdate vor dem Festlegen der Eigenschaften EndBatchUpdate und dann nach dem Festlegen der Eigenschaften.

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

Erstellen und Testen von Code

So erstellen und testen Sie den Code

  1. Erstellen Sie die Projektmappe.

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

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

    • Das einzufügende caretzeichen soll magentarot sein und das überschreibens caretzeichen soll Türkis sein.

    • Im Indikatorrand (auf der linken Seite der Textansicht hellgrün) sollte.

  3. Wählen Sie den Text aus, den Sie gerade eingegeben haben. Die Farbe des markierten Textes soll hellrosa sein.

  4. Während der Text markiert ist, klicken Sie auf eine beliebige Stelle außerhalb des Textfensters. Die Farbe des markierten Texts Rosa dunkles soll.

  5. Schalten Sie ein sichtbarer Leerraum. (Klicken Sie im Menü Bearbeiten klicken Sie auf Erweitert, und klicken Sie dann auf Leerstelle anzeigen). Geben Sie mehrere Registerkarten im Text ein. Rote Pfeile, die die Registerkarten darstellen, sollten angezeigt werden.

Siehe auch

Konzepte

Editor-Erweiterungs-Punkte