2016-11-10 25 views
0

我試圖從一個靜態方法的一些數據到我的主窗口-S數據網格(添加列),我想實現這個加載加載到特定的窗體DataGrid窗口的新實例。我已經砍死在一起的辦法來解決靜態侷限性,但它無法用一個錯誤C#WPF中,試圖不創建一個數據從一個靜態方法

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

並使該方法非靜態工作。我錯過了什麼,或者有更好的方法來做到這一點?

+0

我沒有看到你將'mainWindow'設置爲任何東西。嘗試在構造函數中添加'mainWindow = this;'。 – itsme86

回答

1

您需要設置mainWindow對象實例。你可以在構造函數中這樣做:

public MainWindow() 
{ 
    mainWindow = this; 

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

哇,太容易了,謝謝 – BoKKeR

相關問題