2016-09-13 3 views
1

Nous aimerions faire une petite application de dessin et je ne sais pas comment faire une classe dérivée de la forme ou de l'uielement ou autre chose qui contient plusieurs objets comme une ligne et un texte ou plusieurs lignes qui ne sont pas connectées. Comment ferais-je cela?Comment pouvons-nous faire une classe qui contient plusieurs uielements et agit comme un uielement

Pour une ellipse j'ai ceci:

public class B_Null : Shape 
{ 
    EllipseGeometry eg; 
    public double Breedte { get; private set; } 

    public B_Null() 
    { 
     Stroke = Brushes.Red; 
     StrokeThickness = 1; 
     Fill = Brushes.Red; 
     eg = new EllipseGeometry(new Point(100, 100), 100, 100); 
     Breedte = 200; 
    } 

    protected override Geometry DefiningGeometry 
    { 
     get 
     { 
      return eg; 
     } 
    } 

} 

Les travaux ci-dessus, mais il ne peut pas gérer plusieurs UIElements? (ou plusieurs lignes non connectées)

L'objectif est d'avoir une classe contenant plusieurs éléments. À la fin, je veux utiliser ce code: Canvas.SetTop (MyUiElement, ...);

+0

Pourquoi ne pas hériter de Canvas? – tym32167

+0

L'héritage de contrôles dans WPF peut être une vraie douleur. Une meilleure option (c'est-à-dire plus simple) consiste à créer votre propre UserControl qui contient un élément Grid/Canvas de niveau supérieur, puis à y placer vos différents éléments d'interface utilisateur. – LordWilmore

+0

Vous n'avez pas besoin de ce contrôle dérivé. Utilisez simplement un ItemsControl, probablement avec un Canvas comme ItemsPanel. – Clemens

Répondre

0

Merci beaucoup pour l'information! J'ai hérité de mes objets de dessin du Canevas et ensuite j'ajoute facilement tous mes objets sur une toile. Pourquoi ne pas hériter de Canvas?

public class B_Null : Canvas 
{ 
    private Ellipse Ellipse = new Ellipse(); 


    public B_Null() 
    { 
     Ellipse.Width = 200; 
     Ellipse.Height = 200; 
     Ellipse.Stroke = Brushes.Red; 
     Ellipse.StrokeThickness = 1; 
     Ellipse.Fill = Brushes.Red; 
     this.Children.Add(Ellipse); 
    } 



}