C# 在Avalonedit上着色边距
我已按以下方式在TextEditor的左侧添加了边距(用于添加断点):C# 在Avalonedit上着色边距,c#,.net,wpf,margin,avalonedit,C#,.net,Wpf,Margin,Avalonedit,我已按以下方式在TextEditor的左侧添加了边距(用于添加断点): public partial class LogicSimViewCodeWPFCtrl : UserControl { private class BreakPointMargin : AbstractMargin { private const int margin = 20; protected override HitTestResult HitTestCore(Po
public partial class LogicSimViewCodeWPFCtrl : UserControl
{
private class BreakPointMargin : AbstractMargin
{
private const int margin = 20;
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
return new PointHitTestResult(this, hitTestParameters.HitPoint);
}
protected override Size MeasureOverride(Size availableSize)
{
return new Size(margin, 0);
}
}
}
private void LogicCodeInit()
{
try
{
TxtEditCodeViewer.TextArea.LeftMargins.Insert(0, new BreakPointMargin());
...
边距添加成功,但现在我想给边距的背景上色。我如何才能做到这一点?
您必须重写OnRender
:
protected override void OnRender(DrawingContext drawingContext)
{
Size renderSize = this.RenderSize;
drawingContext.DrawRectangle(SystemColors.ControlBrush, null,
new Rect(0, 0, renderSize.Width, renderSize.Height));
此外,您不需要从AbstractMargin
派生-您可以使用任何想要的WPF控件AbstractMargin
只提供TextView
和Document
属性,并使它们保持最新。如果您不需要这些或可以自己实现它们,您可以使用另一个基类。
您必须在渲染时覆盖OnRender
:
protected override void OnRender(DrawingContext drawingContext)
{
Size renderSize = this.RenderSize;
drawingContext.DrawRectangle(SystemColors.ControlBrush, null,
new Rect(0, 0, renderSize.Width, renderSize.Height));
此外,您不需要从AbstractMargin
派生-您可以使用任何想要的WPF控件AbstractMargin
只提供TextView
和Document
属性,并使它们保持最新。如果您不需要这些,或者可以自己实现它们,那么您可以使用另一个基类