如何从c#中的另一个类调用方法?

时间:2014-10-02 06:44:38

标签: c# wpf canvas

在C#中,我有一个类如下的方法:

namespace ControlCenter
{
    public partial class Canvas
    {
        ...
        public void display(string itemID)
        {
            ... // here assign some properties to the item
            this.Children.Add(item);
        }
    }
}

此功能允许我成功地将一个项目添加到我的画布。现在我想在另一个不同的类中调用此方法,如下所示:

namespace ControlCenter
{
    public class addLayer
    {
        private ControlCenter.Canvas myCanvas = new ControlCenter.Canvas();

        public void add()
        {
            myCanvas.display("1234");
        }
    }
}

但是这不能在我的画布上添加任何项目。通过调试,我怀疑问题应该在这一行:

this.Children.Add(item);

display类调用addLayer方法时,this并未指向活动画布。但即使在大众互联网搜索之后,我也找不到任何解决方案。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

在显示的示例中,我猜测canvas是一个UserControl,您的目标是当您调用add()方法时,向该用户控件添加一个项目。但是在addlayer类的当前示例中,您创建了一个全新的画布,您已添加了一个项目。该方法确实有效,只是您将孩子添加到未显示的全新canvas。解决这个问题的方法是将显示的画布实例传递给addlayer类。在InitialiseComponent()方法之后。

像这样...

namespace ControlCenter
{
    public partial class Canvas : UserControl
    {

        public Canvas
        {
          InitialiseComponent();
          addLayer.myCanvas = this;

        }

        public void display(string itemID)
        {
            ... // here assign some properties to the item
            this.Children.Add(item);
        }
    }
}


namespace ControlCenter
{
    public static class addLayer
    {
        private static ControlCenter.Canvas myCanvas;

        public static void add()
        {
            myCanvas.display("1234");
        }
    }
}

现在,当您调用addLayer.add()时,您将向显示的画布添加项目