【发布时间】:2017-02-06 22:20:10
【问题描述】:
我目前使用以下代码作为 LineTransformer 和 AvalonEdit TextEditor。我希望能够通过选择突出显示当前的单个搜索结果,但是选择几乎不可见,因为DocumentColorizingTransformer 的格式优先于显示突出显示的文本。如何让突出显示的选择在格式化之前或之前显示?
public class ColorizeSearchResults : DocumentColorizingTransformer {
public ColorizeSearchResults() : base() {
SearchTerm = "";
MatchCase = false;
}
public string SearchTerm { get; set; }
public bool MatchCase { get; set; }
protected override void ColorizeLine(DocumentLine line) {
if (SearchTerm.Length == 0)
return;
int lineStartOffset = line.Offset;
string text = CurrentContext.Document.GetText(line);
int count = 0;
int start = 0;
int index;
while ((index = text.IndexOf(SearchTerm, start, MatchCase ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase)) >= 0) {
base.ChangeLinePart(
lineStartOffset + index,
lineStartOffset + index + SearchTerm.Length,
(VisualLineElement element) => {
element.TextRunProperties.SetForegroundBrush(Brushes.White);
element.TextRunProperties.SetBackgroundBrush(Brushes.Magenta);
});
start = index + 1;
count++;
}
}
}
【问题讨论】:
标签: c# wpf avalonedit