Compartir a través de


tutorial: personalizar la vista de texto

Puede personalizar una vista de texto en que se modifica siguiendo las cualquiera de las propiedades del formato del editor asignado:

  • Margen del indicador

  • Símbolo de intercalación de inserción

  • Símbolo de intercalación sobrescribirá

  • texto seleccionado

  • Texto seleccionado inactivo (es decir, texto seleccionado que ha perdido el foco)

  • espacio en blanco visible

Requisitos previos

Para completar este tutorial, debe instalar Visual Studio 2010 SDK. Para obtener más información sobre Visual Studio SDK y descargarlo, vea Centro para desarrolladores de extensibilidad de Visual Studio en el sitio web de MSDN.

Crear un proyecto administrado del marco (MEF) de extensibilidad

Para crear un proyecto de MEF

  1. Cree un proyecto del clasificador del editor de C# o el proyecto del Editor de Visual Basic Clasificador. Llame a la solución ViewPropertyTest.

  2. Abra el archivo source.extension.vsixmanifest del editor de Manifiesto VSIX.

  3. Asegúrese de que la dirección de Content contiene un tipo de contenido componente MEF y que la ruta de acceso está establecida en ViewPropertyTest.dll.

  4. Guarde y cierre source.extension.vsixmanifest.

  5. elimine los archivos existentes de la clase.

Definición de tipo de contenido

para definir un tipo de contenido

  1. Agregue un archivo de clase y denomínelo ViewPropertyModifier.

  2. Agregue las siguientes directivas de using (instrucciones deImports en 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. declare una clase denominada TestViewCreationListener que herede de IWpfTextViewCreationListener. Exportar esta clase con los atributos siguientes:

    <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. en esta clase, importe IEditorFormatMapService.

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

cambiar las propiedades view

para cambiar las propiedades view

  • Implemente el método de TextViewCreated para cambiar las propiedades ver cuando se abre la vista. Para realizar el cambio, localice primero ResourceDictionary que corresponden a la apariencia de la vista que desea buscar. Y cambia la propiedad adecuada en el diccionario de recursos y establezca las propiedades. Procesar por lotes las llamadas al método de SetProperties llamando al método de BeginBatchUpdate antes de establecer las propiedades y después EndBatchUpdate después de establecer las propiedades.

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

Compilar y probar el código

para compilar y probar el código

  1. Compile la solución.

    Al ejecutar este proyecto en el depurador, una segunda instancia de Visual Studio se crea instancias.

  2. Cree un archivo de texto y escriba texto.

    • El símbolo de intercalación de inserción debe ser magenta y el símbolo de intercalación sobrescribirá debe ser turquesa.

    • El margen del indicador (a la izquierda de la vista de texto) debe ser verde claro.

  3. Seleccione el texto que acaba de escribir. Color del texto seleccionado debe ser rosa claro.

  4. Aunque el texto está seleccionado, haga clic en cualquier punto fuera de la ventana de texto. Color del texto seleccionado debe ser rosa de la oscuridad.

  5. Active el espacio en blanco visible. (En el menú de editar , elija Avanzadas>> y haga clic en Ver espacios en blanco). escriba algunas fichas en el texto. Las flechas rojas que representan las pestañas se deben mostrar.

Vea también

Conceptos

Puntos de extensión del editor