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);
并使该方法变为非静态的。是我遗漏了什么,还是有更好的方法?
需要将mainWindow
设置为对象实例。您可以在构造函数中这样做:
public MainWindow()
{
mainWindow = this;
InitializeComponent();
ArgumentLoader();
SqliteDatabase.check_for_database();
SqliteDatabase.load_database();
ColumnLoader("alias");
}