2010-05-30 78 views
0

我需要一個自定義邊框,其渲染方式與普通邊框稍有不同。我提出,從裝飾繼承如下WPF中的自定義裝飾器類的子代碼

class BetterBorder : Decorator 
{ 
    protected override Size ArrangeOverride(Size arrangeSize) 
    { 
     return arrangeSize; 
    } 

    protected override void OnRender(DrawingContext dc) 
    { 
     //these values are calculated elsewhere 
     dc.DrawGeometry(backgroundBrush, borderPen, pathGeometry); 
    } 
} 
//Properties and helper methods below this 

,直到我嘗試將孩子添加到控制所有這一切工作正常,可加控制,但是是不可見的,似乎是移出可見BetterBorders類客戶區。如果我從邊界繼承一切正常,我錯過了什麼?

回答

1

通過確保你叫ArrangeOverride

的基實現
protected override Size ArrangeOverride(Size arrangeSize) 
{ 
    base.ArrangeOverride(arrangeSize); 
    return arrangeSize; 
} 
容易固定