c#wpf,尝试从静态方法

时间:2016-11-10 18:31:30

标签: c# wpf static

我正在尝试从静态方法将一些数据加载到我的mainwindow-s数据网格中(添加列),我试图在不创建窗口的新实例的情况下实现此目的。我已经破解了一种解决静态限制的方法,但它失败并出现错误

   public partial class MainWindow : MetroWindow
        {
            static MainWindow mainWindow;
            public MainWindow()
            {

            InitializeComponent();
            ArgumentLoader();
            SqliteDatabase.check_for_database();
            SqliteDatabase.load_database();
            ColumnLoader("alias");

        }

    public static void ColumnLoader(string alias)
    { 
        DataGridTextColumn textColumn = new DataGridTextColumn();
        textColumn.Header = "X";
        textColumn.Binding = new Binding("X");
        mainWindow.dataGrid.Columns.Add(textColumn);
    }

例外

An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in PresentationFramework.dll

Additional information: Exception has been thrown by the target of an invocation.

如果我重命名

mainWindow.dataGrid.Columns.Add(textColumn); 

dataGrid.Columns.Add(textColumn);

并使该方法非静态工作。我错过了什么或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要将mainWindow设置为对象实例。您可以在构造函数中执行此操作:

public MainWindow()
{
    mainWindow = this;

    InitializeComponent();
    ArgumentLoader();
    SqliteDatabase.check_for_database();
    SqliteDatabase.load_database();
    ColumnLoader("alias");
}