Partilhar via


Passo a passo: Personalizando o modo de exibição de texto

Você pode personalizar um modo de exibição de texto, modificando a qualquer uma das seguintes propriedades em seu mapa do formato do editor:

  • Margem do indicador

  • Cursor de inserção

  • Cursor de substituição

  • Texto selecionado

  • Texto selecionado inativo (ou seja, texto selecionado que perdeu o foco)

  • Espaço em branco visível

Pré-requisitos

Para concluir este passo a passo, você deve instalar o SDL do Visual Studio 2010. Para obter mais informações sobre o SDK do Visual Studio e baixá-lo, consulte Visual Studio extensibilidade Developer Center no site do MSDN.

Criando um projeto do Framework (MEF) de extensibilidade gerenciada

Para criar um projeto MEF

  1. Crie um projeto do classificador de Editor de C# ou Visual Basic Editor classificador. Nomeie a solução ViewPropertyTest.

  2. Abra o arquivo de source.extension.vsixmanifest no Editor de VSIX de manifesto.

  3. Certifique-se de que o Content título contém um tipo de conteúdo do componente MEF e que o caminho é definido como ViewPropertyTest.dll.

  4. Salve e feche o source.extension.vsixmanifest.

  5. Exclua os arquivos de classe existentes.

A definição do tipo de conteúdo

Para definir um tipo de conteúdo

  1. Adicione um arquivo de classe e denomine- ViewPropertyModifier.

  2. Adicione o seguinte using diretivas (Imports as instruções em 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. Declara uma classe chamada TestViewCreationListener que herda de IWpfTextViewCreationListener. Exporte esta classe com os seguintes atributos:

    <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. Nesta classe, importar o IEditorFormatMapService.

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

Alterando as propriedades de exibição

Para alterar as propriedades de exibição

  • Implementar a TextViewCreated método para que as propriedades do modo de exibição são alteradas quando o modo de exibição é aberto. Para fazer a alteração, primeiro localize o ResourceDictionary que corresponde ao aspecto do modo de exibição que deseja localizar. Altere a propriedade apropriada no dicionário de recurso e definir as propriedades. Os planos de lote a SetProperties método chamando o BeginBatchUpdate método antes de definir as propriedades e, em seguida o EndBatchUpdate depois de definir as propriedades.

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

Criar e testar o código

Para criar e testar o código

  1. Crie a solução.

    Ao executar este projeto no depurador, uma segunda instância do Visual Studio é instanciada.

  2. Crie um arquivo de texto e digite algum texto.

    • O cursor de inserção deve ser magenta e o cursor de substituição deve ser turquesa.

    • A margem do indicador (à esquerda do modo de exibição de texto) deve ser uma luz verde.

  3. Selecione o texto que você acabou de digitar. A cor do texto selecionado deve ser luz rosa.

  4. Enquanto o texto estiver selecionado, clique em qualquer lugar fora da janela de texto. A cor do texto selecionado deve ser rosa escura.

  5. Ative o espaço em branco visível. (Sobre o Editar , aponte para Advanced e, em seguida, clique em Exibir espaço em branco). Digite o texto algumas guias. Setas vermelhas que representam as guias devem ser exibidas.

Consulte também

Conceitos

Pontos de extensão do Editor