Udostępnij za pośrednictwem


Przewodnik: dostosowywanie widoku tekstu

Widok tekstu można dostosować, modyfikując dowolną z następujących właściwości w mapie w formacie edytora:

  • Margines wskaźnika

  • Daszek wstawiania

  • Zastąp daszek

  • Zaznaczony tekst

  • Nieaktywny zaznaczony tekst (czyli zaznaczony tekst, który stracił fokus)

  • Widoczne białe znaki

Tworzenie projektu MEF

  1. Utwórz projekt VSIX w języku C#. (W Okno dialogowe Nowy projekt , wybierz pozycję Visual C# / Rozszerzalność, a następnie projekt VSIX. Nadaj rozwiązaniu ViewPropertyTestnazwę .

  2. Dodaj szablon elementu Klasyfikator edytora do projektu. Aby uzyskać więcej informacji, zobacz Tworzenie rozszerzenia za pomocą szablonu elementu edytora.

  3. Usuń istniejące pliki klas.

Definiowanie typu zawartości

  1. Dodaj plik klasy i nadaj mu ViewPropertyModifiernazwę .

  2. Dodaj następujące using dyrektywy:

    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. Zadeklaruj klasę o nazwie TestViewCreationListener , która dziedziczy z klasy IWpfTextViewCreationListener. Wyeksportuj tę klasę przy użyciu następujących atrybutów:

    • ContentTypeAttribute aby określić typ zawartości, do której ma zastosowanie ten odbiornik.

    • TextViewRoleAttribute aby określić rolę tego odbiornika.

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

  4. W tej klasie zaimportuj element IEditorFormatMapService.

    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Zmienianie właściwości widoku

  1. Skonfiguruj metodę TextViewCreated tak, aby właściwości widoku zostały zmienione po otwarciu widoku. Aby wprowadzić zmianę, najpierw znajdź ResourceDictionary element odpowiadający aspektowi widoku, który chcesz znaleźć. Następnie zmień odpowiednią właściwość w słowniku zasobów i ustaw właściwości. Wsadowe wywołania SetProperties metody przez wywołanie BeginBatchUpdate metody przed ustawieniem właściwości, a następnie EndBatchUpdate po ustawieniu właściwości.

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

Kompilowanie i testowanie kodu

  1. Stwórz rozwiązanie.

    Po uruchomieniu tego projektu w debugerze zostanie uruchomione drugie wystąpienie programu Visual Studio.

  2. Utwórz plik tekstowy i wpisz tekst.

    • Karetki wstawiania powinny być magenta, a karetki zastępowania powinny być turkusowe.

    • Margines wskaźnika (po lewej stronie widoku tekstu) powinien być jasnozielony.

  3. Wybierz wpisany tekst. Kolor zaznaczonego tekstu powinien być jasnoróżowy.

  4. Gdy tekst jest zaznaczony, kliknij dowolne miejsce poza oknem tekstowym. Kolor zaznaczonego tekstu powinien być ciemnoróżowy.

  5. Włącz widoczne białe znaki. (Na stronie Edytuj menu, wskaż pozycję Zaawansowane , a następnie kliknij pozycję Wyświetl biały znak. Wpisz niektóre karty w tekście. Powinny być wyświetlane czerwone strzałki reprezentujące karty.