Demonstra Passo a passo: Personalizar a vista de texto
Você pode personalizar um modo de exibição de texto modificando qualquer uma das seguintes propriedades em seu mapa de formato de editor:
Margem de indicadores
Cursor de inserção
Substituir acento circunflexo
Texto selecionado
Texto selecionado inativo (ou seja, texto selecionado que perdeu o foco)
Espaço em branco visível
Criar um projeto MEF
Crie um projeto C# VSIX. (No Caixa de diálogo Novo Projeto, selecione Visual C# / Extensibilidade e, em seguida, Projeto VSIX.) Nomeie a solução
ViewPropertyTest
.Adicione um modelo de item Editor Classificador ao projeto. Para obter mais informações, consulte Criar uma extensão com um modelo de item do editor.
Exclua os arquivos de classe existentes.
Definir o tipo de conteúdo
Adicione um arquivo de classe e nomeie-o
ViewPropertyModifier
.Adicione as seguintes diretivas
using
:Declare uma classe chamada
TestViewCreationListener
que herda de IWpfTextViewCreationListener. Exporte essa classe com os seguintes atributos:ContentTypeAttribute para especificar o tipo de conteúdo ao qual esse ouvinte se aplica.
TextViewRoleAttribute para especificar a função desse ouvinte.
Nessa classe, importe o IEditorFormatMapServicearquivo .
Alterar as propriedades do modo de exibição
Configure o método para que as propriedades do modo de exibição sejam alteradas quando o TextViewCreated modo de exibição for aberto. Para fazer a alteração, primeiro localize o ResourceDictionary que corresponde ao aspecto do modo de exibição que você deseja localizar. Em seguida, altere a propriedade apropriada no dicionário de recursos e defina as propriedades. Agrupe em lote as chamadas para o método chamando o SetProperties BeginBatchUpdate método antes de definir as propriedades e, em seguida, depois de EndBatchUpdate definir as propriedades.
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(); }
Compilar e testar o código
Compile a solução.
Quando você executa esse projeto no depurador, uma segunda instância do Visual Studio é iniciada.
Crie um arquivo de texto e digite algum texto.
O acento circunflexo de inserção deve ser magenta e o acento circunflexo de sobreposição deve ser turquesa.
A margem do indicador (à esquerda da visualização de texto) deve ser verde claro.
Selecione o texto que você digitou. A cor do texto selecionado deve ser rosa claro.
Enquanto o texto estiver selecionado, clique em qualquer lugar fora da janela de texto. A cor do texto selecionado deve ser rosa escuro.
Ative o espaço em branco visível. (Sobre o Menu Editar , aponte para Avançado e clique em Exibir espaço em branco). Digite algumas guias no texto. As setas vermelhas que representam as guias devem ser exibidas.