Frage

Ich habe ein benutzerdefiniertes Panel, das ein schönes benutzerdefiniertes Layout seiner Kinder implementiert. Ich möchte dem Panel zusätzliche Grafiken hinzufügen und Onrender überschreiben, um zusätzliche Rechtecke usw. hinzuzufügen usw. Es funktioniert großartig, außer dass der Onrender nur zum Hintergrund hinzugefügt zu haben scheint. Gibt es eine Möglichkeit, Ihre Onrender -Zeichnung dazu zu bringen, über die Kinder zu stehen?

Ein Beispielpanel ...

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));
    }
}

... auf diese Weise verwendet ...

<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>
War es hilfreich?

Lösung

Ich würde Ihr "Renderpanel" von Leinwand erben und dann auf den Wrappanel legen und den Zindex gegebenenfalls angeben. So etwas sollte funktionieren:

<Grid>
    <WrapPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Canvas.ZIndex="0">
        <Button Margin="10" Content="Hello"/>
        <Button Margin="10" Content="Hello"/>
        <Button Margin="10" Content="Hello"/>
        <Button Margin="10" Content="Hello"/>
    </WrapPanel>
    <my:RenderPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Canvas.ZIndex="1" />
</Grid>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top