Поделиться через


Пошаговое руководство. Настройка текстового представления

Вы можете настроить текстовое представление, изменив любое из следующих свойств в карте формата редактора:

  • Поле индикаторов

  • Вставка курсора

  • Перезапись курсора

  • Выделенный текст

  • Неактивный выделенный текст (т. е. выделенный текст, который потерял фокус)

  • Видимое пробелы

Создание проекта MEF

  1. Создайте проект VSIX на C#. (В Диалоговое окно "Новый проект" , выберите Visual C# / Расширяемость, а затем ПРОЕКТ VSIX.) Назовите решение ViewPropertyTest.

  2. Добавьте в проект шаблон элемента классификатора редактора. Дополнительные сведения: Создание расширения с помощью шаблона элемента редактора.

  3. Удалите файлы существующих классов.

Определение типа контента

  1. Добавьте файл класса с именем ViewPropertyModifier.

  2. Затем добавьте следующие using директивы:

    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. Объявите класс с именем TestViewCreationListener , наследуемым от IWpfTextViewCreationListener. Экспортируйте этот класс со следующими атрибутами:

    • ContentTypeAttribute , чтобы указать тип контента, к которому применяется этот прослушиватель.

    • TextViewRoleAttribute , чтобы указать роль этого прослушивателя.

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

  4. В этом классе импортируйте IEditorFormatMapService.

    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Изменение свойств представления

  1. Настройте TextViewCreated метод таким образом, чтобы свойства представления были изменены при открытии представления. Чтобы внести изменения, сначала найдите ResourceDictionary соответствующий аспекту представления, которое нужно найти. Затем измените соответствующее свойство в словаре ресурсов и задайте свойства. Пакетная обработка вызовов SetProperties метода путем вызова BeginBatchUpdate метода перед заданием свойств, а затем EndBatchUpdate после задания свойств.

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

Сборка и проверка кода

  1. Постройте решение.

    При запуске этого проекта в отладчике запускается второй экземпляр Visual Studio.

  2. Создайте текстовый файл и введите любой текст.

    • Курсор вставки должен быть magenta, и перезапись ватин должен быть бирюзовым.

    • Поле индикатора (слева от текстового представления) должно быть светло-зеленым.

  3. Выберите набранный текст. Цвет выделенного текста должен быть светло-розовым.

  4. Пока текст выбран, щелкните в любом месте за пределами текстового окна. Цвет выделенного текста должен быть темно-розовым.

  5. Включите видимое пробелы. (В Меню "Изменить ", наведите указатель мыши на "Дополнительно " и выберите пункт "Просмотреть пробелы". Введите некоторые вкладки в тексте. Должны отображаться красные стрелки, представляющие вкладки.