2012-07-19 81 views
1

保證金我加了保證金(用於添加斷點)到我的文本編輯左側以下方式:着色上Avalonedit

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

保證金增加成功,但現在我想以色邊距的背景。我怎樣才能做到這一點?

回答

3

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只是提供了TextViewDocument屬性並使它們保持最新狀態。如果你不需要這些或者可以自己實現它們,你可以使用另一個基類。