【发布时间】:2016-09-13 11:30:44
【问题描述】:
我们想做一个小绘图应用程序,但我不知道如何创建一个派生自 shape 或 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,...);
【问题讨论】:
-
为什么不从 Canvas 继承?
-
从 WPF 中的控件继承可能真的很痛苦。一个更好(即更简单)的选项是创建您自己的包含顶级 Grid/Canvas 项目的 UserControl,然后将您的各种 UI 元素放入其中。
-
您不需要这个派生控件。只需使用 ItemsControl,可能使用 Canvas 作为 ItemsPanel。