gpt4 book ai didi

c# - Avalonedit 如何使线路变压器失效

转载 作者:太空狗 更新时间:2023-10-29 20:59:13 24 4
gpt4 key购买 nike

我已将派生自 DocumentColorizingTransformer 的 LineTransformerClass 添加到 TextEditor:

TxtEditCodeViewer.TextArea.TextView.LineTransformers.Add(new ColorizeAvalonEdit());

是否有任何编程方式可以在 Linetransformer 上调用失效?

我很容易假设,因为它被添加到 TextView 中,所以以下应该有效:

TxtEditCodeViewer.TextArea.TextView.InvalidateVisual();
TxtEditCodeViewer.TextArea.TextView.InvalidateArrange();
TxtEditCodeViewer.TextArea.TextView.InvalidateMeasure();

但他们没有。为了以防万一,我也尝试了以下方法:

//TxtEditCodeViewer.TextArea.TextView.InvalidateVisual();
//TxtEditCodeViewer.TextArea.TextView.InvalidateArrange();
//TxtEditCodeViewer.TextArea.TextView.InvalidateMeasure();
//TxtEditCodeViewer.InvalidateVisual();
//TxtEditCodeViewer.InvalidateArrange();
//TxtEditCodeViewer.InvalidateMeasure();
//TxtEditCodeViewer.TextArea.InvalidateArrange();
//TxtEditCodeViewer.TextArea.InvalidateMeasure();
//TxtEditCodeViewer.TextArea.InvalidateVisual();

最佳答案

TextView 维护生成的视线的缓存。强制 WPF 重新绘制控件只会使其重新使用缓存中的结果,而不会再次调用您的线路转换器。

您可以使用 TextView.Redraw 方法使缓存的视觉线条无效:

textEditor.TextArea.TextView.Redraw(segment); // invalidate portion of document
textEditor.TextArea.TextView.Redraw(); // invalidate whole document

这适用于 ElementGeneratorsLineTransformers

对于BackgroundRenderers,没有必要使视线无效。相反,只需告诉 TextView 使您的背景渲染器所属的层无效:

textEditor.TextArea.TextView.InvalidateLayer(this.Layer);

关于c# - Avalonedit 如何使线路变压器失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com