c# wpf,尝试从静态方法将数据加载到特定的表单数据网格

本文关键字:数据 表单 网格 数据网 加载 静态方法 wpf | 更新日期: 2023-09-27 18:17:24

我试图从静态方法加载一些数据到我的主窗口数据网格(添加列),我试图在不创建窗口的新实例的情况下实现这一点。我已经破解了一个方法来绕过静态限制,但它失败了一个错误

   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);

并使该方法变为非静态的。是我遗漏了什么,还是有更好的方法?

c# wpf,尝试从静态方法将数据加载到特定的表单数据网格

需要将mainWindow设置为对象实例。您可以在构造函数中这样做:

public MainWindow()
{
    mainWindow = this;
    InitializeComponent();
    ArgumentLoader();
    SqliteDatabase.check_for_database();
    SqliteDatabase.load_database();
    ColumnLoader("alias");
}