none
Eine Linie quer über das Fenster zeichnen RRS feed

  • Frage

  • Hi,

    ich habe eine Page, darin ScrollViewer, darin StackPanel, darin DockPanel, Popup, WrapPanel darin Border etc., eine komplexe Seite.

    Nun will ich von einem Label (innerhalb eines Popup) eine Linie zu einem anderen Label ziehen.
    Ich lese die Positionen der zwei Label (erfolgreich) aus

    Point pointMenuItem = lblMouseEnter.PointToScreen(new Point(0d, 0d));
    Point pointTarget = lbl.TransformToAncestor(this).Transform(new Point(0, 0));


    und erstelle eine Line:

    Line line = new Line();
    line.StrokeThickness = 1;
    line.Stroke = Brushes.Red;
    line.X1 = pointMenuItem.X;
    line.Y1 = pointMenuItem.Y;
    line.X2 = pointTarget.X;
    line.Y2 = pointTarget.Y;


    Aber wie zeige ich die Line auf this (der Page) an?

    this.AddLogicalChild und this.AddVisualChild helfen nicht weiter.

    Frank


    www.energiewende-mach-ich-selbst.de



    • Bearbeitet frank me Mittwoch, 7. Januar 2015 12:40
    Mittwoch, 7. Januar 2015 12:39

Antworten

  • Hallo,

    viele Klassen implementieren das IAddChild-Interface. Damit kannst du auf die "Kinder" zugreifen.

    http://msdn.microsoft.com/de-de/library/system.windows.controls.panel.children(v=vs.110).aspx

    Die Verwendung erfolgt wie unten geschrieben:

    Line _l;
    Grid _g; //Grid, StackPanel etc. untersützen kinder / "FrameRoot"
    
    _g.Children.Add(_l); 
    
    

    Eine Page hingegen hat nur eine Content-Eigenschaft. Erstelle doch in dieser Page eine Grid, auf der du dann alles setzt (alle UI-Elemente und die Linien):

    <Page ...>
       <Grid x:Name="FrameRoot">
           <!-- aller anderer Inhalt -->
       </Grid>
    </Page>


    © 2015 Thomas Roskop


    • Bearbeitet Thomas Roskop Mittwoch, 7. Januar 2015 12:55
    • Als Antwort markiert frank me Mittwoch, 7. Januar 2015 14:09
    Mittwoch, 7. Januar 2015 12:55

Alle Antworten