VisualCollection wird nicht gerendert



  • Hallo, ich habe ein Problem mit einer VisualCollection. Und zwar werden die hinzugefügten Elemente nicht im Canvas angezeigt.

    Die Canvas-Klasse schaut in etwa so aus:

    class MyCanvas : Canvas
    {
        private VisualCollection m_ModelCollection;
    
        public MyCanvas()
        {
            m_ModelCollection = new VisualCollection(this);
        }
    }
    

    Elemente hinzufügen lassen sich folgendermaßen:

    protected static void AddNewObject(MyCanvas drawingCanvas, ModelBase modelBase)
    {
        modelBase.Clip = new RectangleGeometry(new Rect(0, 0, drawingCanvas.ActualWidth, drawingCanvas.ActualHeight));
        drawingCanvas.ModelCollection.Add(modelBase);
        drawingCanvas.CaptureMouse();
    }
    

    Hierbei ist die Klasse ModelBase von DrawingVisual abgeleitet.

    Auch das Ausführen von

    DrawingVisual dv = new DrawingVisual();
    DrawingContext dc = dv.RenderOpen();
    dc.DrawLine(
        new Pen(new SolidColorBrush(Colors.Orange), 1.0),
        new Point(50, 50),
        new Point(500, 500));
        dc.Close();
    m_ModelCollection.Add(dv);
    

    bringt nichts. Was mache ich falsch?



  • Hab den Fehler gefunden. Ich musste den folgenden Code ergänzen:

    protected override Visual GetVisualChild(int index)
    { return m_ModelCollection[index]; }
    
    protected override int VisualChildrenCount
    { get { return m_ModelCollection.Count; } }
    

    Warum auch immer.


Anmelden zum Antworten