Tutorial: Personalización de la vista de texto
Puede personalizar una vista de texto modificando cualquiera de las siguientes propiedades en su mapa de formato editor:
Margen del indicador
Inserción de símbolo de intercalación
Sobrescribir símbolo de intercalación
Texto seleccionado
Texto seleccionado inactivo (es decir, texto seleccionado que perdió el foco)
Espacios en blanco visibles
Creación de un proyecto MEF
Cree un proyecto VSIX de C#. (En Cuadro de diálogo Nuevo proyecto , seleccione Visual C# / Extensibilidad y, después , Proyecto VSIX). Asigne un nombre a la solución
ViewPropertyTest
.Agregue una plantilla de elemento clasificador del editor al proyecto. Para obtener más información, vea Creación de una extensión con una plantilla de elemento de editor.
Elimine los archivos de clase existentes.
Definición del tipo de contenido
Agregue un archivo de clase y asígnele el nombre
ViewPropertyModifier
.Agregue las siguientes directivas
using
:Declare una clase denominada
TestViewCreationListener
que hereda de IWpfTextViewCreationListener. Exporte esta clase con los atributos siguientes:ContentTypeAttribute para especificar el tipo de contenido al que se aplica este agente de escucha.
TextViewRoleAttribute para especificar el rol de este agente de escucha.
En esta clase, importe .IEditorFormatMapService
Cambiar las propiedades de la vista
Configure el TextViewCreated método para que las propiedades de la vista se cambien cuando se abra la vista. Para realizar el cambio, busque primero el ResourceDictionary que corresponde al aspecto de la vista que desea encontrar. A continuación, cambie la propiedad adecuada en el diccionario de recursos y establezca las propiedades. Realice por lotes las llamadas al SetProperties método llamando al BeginBatchUpdate método antes de establecer las propiedades y, después, después de EndBatchUpdate establecer las propiedades.
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(); }
Compilación y prueba del código
Compile la solución.
Al ejecutar este proyecto en el depurador, se inicia una segunda instancia de Visual Studio.
Cree un archivo de texto y escriba algún texto.
El símbolo de inserción debe ser magenta y el símbolo de intercalación de sobrescritura debe ser turquesa.
El margen del indicador (a la izquierda de la vista de texto) debe ser verde claro.
Seleccione el texto que escribió. El color del texto seleccionado debe ser rosa claro.
Mientras se selecciona el texto, haga clic en cualquier lugar fuera de la ventana de texto. El color del texto seleccionado debe ser rosa oscuro.
Active el espacio en blanco visible. (En el Menú Editar, seleccione Avanzadas y, a continuación, haga clic en Ver espacio en blanco). Escriba algunas pestañas en el texto. Se deben mostrar las flechas rojas que representan las pestañas.