2016-09-13 19 views
1

Мы хотели бы сделать небольшое приложение для рисования, и я не знаю, как сделать класс, полученный из формы или uielement, или что-то еще, содержащее несколько объектов как строка и текст или несколько строк, которые не связаны. Как мне это сделать?Как мы можем создать класс, который содержит несколько элементов и действует как uielement.

Для эллипса у меня есть это:

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

} 

Вышеперечисленные работы, но он не может работать с несколькими UiElements? (или несколько линий, которые не подключены)

Цель состоит в том, чтобы иметь один класс, который содержит несколько элементов. В конце я хочу использовать этот код: Canvas.SetTop (MyUiElement, ...);

+0

Почему бы не наследовать от Canvas? – tym32167

+0

Наследование из элементов управления в WPF может быть настоящей болью. Гораздо лучше (т. Е. Более простой) вариант состоит в создании собственного UserControl, который содержит элемент Grid/Canvas верхнего уровня, а затем помещает в него различные элементы пользовательского интерфейса. – LordWilmore

+0

Вам не нужен этот производный контроль. Просто используйте ItemControl, возможно, с Canvas как ItemsPanel. – Clemens

ответ

0

Спасибо большое за информацию! Я унаследовал объекты рисования от 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); 
    } 



}