【问题标题】:How can we make an class that contains multiple uielements and acts as a uielement我们如何制作一个包含多个 uielement 并充当 uielement 的类
【发布时间】: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。

标签: c# wpf shapes uielement


【解决方案1】:

非常感谢您提供的信息!我从 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);
    }



}

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多