2

我通过以下方式在我的 TextEditor 的左侧添加了一个边距(用于添加断点):

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());
            ...

边距已成功添加,但现在我想为边距的背景着色。我怎样才能做到这一点?

4

1 回答 1

4

http://community.sharpdevelop.net/forums/t/16047.aspx

您将不得不覆盖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只提供TextViewandDocument属性并使它们保持最新。如果您不需要这些或可以自己实现它们,则可以使用另一个基类。

于 2012-07-19T14:41:30.087 回答