C# 是否将数据保存到另一个类中创建的datatable?

C# 是否将数据保存到另一个类中创建的datatable?,c#,wpf,class,C#,Wpf,Class,我对c#相当陌生,对wpf也非常陌生,所以如果这是一个非常愚蠢的问题,请原谅我 我有三节课。这是我的程序结构 在MainWindow类中,应执行一些初始化步骤,其中之一是使用另一个类中的方法创建datatable: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); savelabels

我对c#相当陌生,对wpf也非常陌生,所以如果这是一个非常愚蠢的问题,请原谅我

我有三节课。这是我的程序结构

在MainWindow类中,应执行一些初始化步骤,其中之一是使用另一个类中的方法创建datatable:

public partial class MainWindow : Window
{

        public MainWindow()
        {

            InitializeComponent();

            savelabels table = new savelabels();
            table.createlabeltable();
            //...some other stuff that works
          }
}
此处是创建、填充和按需返回数据表的类:

    public class savelabels
        {
            DataTable labelcoords = new DataTable();

            public void createlabeltable()
            {
                DataColumn column;              

                column = new DataColumn();
                column.DataType = System.Type.GetType("System.Double");
                column.ColumnName = "id";
                labelcoords.Columns.Add(column);

            }

            public void saveposition(double x)
            {
                DataRow row = labelcoords.NewRow();
                row["id"] = x;

                labelcoords.Rows.Add(row);

            }

        public DataTable GetDataTable()  
        {
            return labelcoords;
        }
}
然后我有第三个类,其中有一个方法应该填充datatable:

    public class getdata
    {

        public void filltable()
        {
            double x = 123;
            savelabels ctable = new savelabels();
            ctable.saveposition(x);  
        }

}

我想使用saveposition方法写入表中的值,以及getdata类中的其他方法。问题是,由于labelcoords表中没有“id”列,所以saveposition(x)方法也无法工作,因此我猜在MainWindow类中创建的表无法通过saveposition方法访问。

如果您希望从另一个类实例访问类实例,您需要将实例传递给它。我没有看到您创建
getdata
的实例,因此我无法重构任何实例。但是,它类似于
YourgetdataInstance.filltable(savelabels-mytable)
,在其中,您可以删除新实例的实例化,只需使用
mytable.saveposition(x)
。由于该方法明确地要求某种结构,我倾向于采用simon在评论中提出的方法


但是,如果您想将
filltable
保存在一个单独的类中,可以提供一个如我所示的参数。如果不需要
getdata
的实际实例,可以将其更改为
static
类,以便直接调用它。

为什么不将filltable方法移到savelabels类中呢?您的get data类没有对savelabels类的引用,因此它们不共享同一个DataTable实例。Thx,最后我通过简单地将所有内容移动到getdata类来修复它……在这种情况下,这似乎是最简单甚至最有效的方法。