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
Erstellen Sie ein C#-Editor-Klassifizierungs projekt- oder Visual Basic-Editor-Klassifizierungs enthält. Geben Sie der Projektmappe ViewPropertyTest.
Öffnen Sie die Datei source.extension.vsixmanifest im VSIX-Manifest-Editor.
Überprüfen Sie, ob die Content Überschrift einen MEF-Komponenten-Inhaltstyp enthält und dass der Pfad zu ViewPropertyTest.dll festgelegt ist.
Speichern und schließen Sie source.extension.vsixmanifest.
Löschen Sie die vorhandenen Klassendateien.
Definieren des Inhaltstyps
So definieren Sie einen Inhaltstyp
Fügen Sie eine Klassendatei hinzu, und nennen Sie sie ViewPropertyModifier.
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;
Deklarieren Sie eine Klasse, die von TestViewCreationListenerIWpfTextViewCreationListenererbt. Exportieren Sie diese Klasse mit den folgenden Attributen:
ContentTypeAttribute, um den Typ des Inhalts anzugeben, auf den dieser Listener gilt.
TextViewRoleAttribute, um die Rolle dieses Listeners angeben.
<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 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
Erstellen Sie die Projektmappe.
Wenn Sie dieses Projekt im Debugger ausführen, wird eine zweite Instanz von Visual Studio instanziiert.
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.
Wählen Sie den Text aus, den Sie gerade eingegeben haben. Die Farbe des markierten Textes soll hellrosa sein.
Während der Text markiert ist, klicken Sie auf eine beliebige Stelle außerhalb des Textfensters. Die Farbe des markierten Texts Rosa dunkles soll.
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.