我有一個自定義面板,實現了自己的孩子很好的自定義佈局。我想添加一些額外的圖形到面板,所以重寫OnRender添加額外的矩形等。它的工作很好,除了OnRender似乎只是添加到背景。有沒有辦法讓你的OnRender繪圖在兒童之上?WPF OnRender Z順序控制?
一個例子面板...
public class RenderPanel : WrapPanel
{
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
drawingContext.DrawRectangle(Brushes.Red,
new Pen(Brushes.Black, 2),
new Rect(0, 0, 100, 100));
}
}
......以這種方式使用...
<Grid>
<my:RenderPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Button Margin="10" Content="Hello"/>
<Button Margin="10" Content="Hello"/>
<Button Margin="10" Content="Hello"/>
<Button Margin="10" Content="Hello"/>
</my:RenderPanel>
</Grid>
根據你試圖完成的效果,裝飾者可能更適合你。使用Adorner的主要成本是你必須重寫'OnRender',並且你已經採用了這個成本。 :) –