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
Crie um projeto do classificador de Editor de C# ou Visual Basic Editor classificador. Nomeie a solução ViewPropertyTest.
Abra o arquivo de source.extension.vsixmanifest no Editor de VSIX de manifesto.
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.
Salve e feche o source.extension.vsixmanifest.
Exclua os arquivos de classe existentes.
A definição do tipo de conteúdo
Para definir um tipo de conteúdo
Adicione um arquivo de classe e denomine- ViewPropertyModifier.
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;
Declara uma classe chamada TestViewCreationListener que herda de IWpfTextViewCreationListener. Exporte esta classe com os seguintes atributos:
ContentTypeAttributePara especificar o tipo de conteúdo ao qual se aplica a este ouvinte.
TextViewRoleAttributePara especificar a função deste ouvinte.
<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
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
Crie a solução.
Ao executar este projeto no depurador, uma segunda instância do Visual Studio é instanciada.
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.
Selecione o texto que você acabou de digitar. A cor do texto selecionado deve ser luz rosa.
Enquanto o texto estiver selecionado, clique em qualquer lugar fora da janela de texto. A cor do texto selecionado deve ser rosa escura.
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.