Я написал небольшое быстрое расширение, чтобы сделать это; поскольку вы, скорее всего, захотите изменить его, вам следует взять источник . Важной частью является код в LayoutChanged
:
void ViewLayoutChanged(object sender, TextViewLayoutChangedEventArgs e)
{
IWpfTextView view = sender as IWpfTextView;
var adornmentLayer = view.GetAdornmentLayer("HighlightLines");
foreach (var line in e.NewOrReformattedLines)
{
if (line.Extent.GetText().StartsWith("logger.", StringComparison.OrdinalIgnoreCase))
{
Rectangle rect = new Rectangle()
{
Width = view.ViewportWidth + view.MaxTextRightCoordinate,
Height = line.Height,
Fill = Brushes.AliceBlue
};
Canvas.SetTop(rect, line.Top);
Canvas.SetLeft(rect, 0);
adornmentLayer.AddAdornment(line.Extent, null, rect);
}
}
}
Чтобы построить / запустить это, вам нужно:
- Загрузить VS2010 SDK .
- Создайте новый проект из шаблонов расширений редактора (я обычно выбираю Visual C # -> Расширяемость -> Редактор текстовых украшений).
- Удалить все исходные файлы, которые он создает.
- Добавить HighlightMatchingLines.cs в проект.
- F5 для запуска / тестирования.
- Если вы хотите изменить кисть, измените строку
Fill = Brushes.AliceBlue
.
- Если вы хотите изменить сопоставляемый текст, измените условие в выражении
if
.
- Если вы хотите изменить тип файла, для которого загружено расширение, измените атрибут
[ContentType]
. В разделе «Типы содержимого» * 1029 * этой страницы MSDN перечислены некоторые из наиболее распространенных.