2016-11-21 78 views
0

我正在創建一個有2個窗口的WPF應用程序。WPF:如何從不同的窗口訪問特定的DataTable

在Window_1中我有一個按鈕,用於導入excel文檔並將相應的字段存儲在DataTable中。這個excel文檔成功導入後,我想提示用戶查看文檔。如果用戶說'是',那麼加載Window_2。

在Window_2中有一個DataGrid,我希望它可以使用Window_1中的DataTable填充?

我如何填充使用存儲在數據表中Window_1數據Window_2 DataGrid中

+0

在'Window_2'中創建一個屬性:'public DataTable ExcelData {get; set;}',當用戶說'是'時,賦值給該屬性:'var w2 = new Window_2 {ExcelData = myData};' – ASh

+0

這是我正在尋找的東西。謝謝謝謝。它運作良好 –

回答

1

我想我已經找到了解決我的問題。 (我已經來源於灰的響應這一解決方案。)

在Window_1

DataTable maindata = new DataTable(); //datatable with imported excel data 

//button click event to prompt user to view Window_2 
private void yes_Click(object sender, RoutedEventArgs e){ 
var w2 = new Window { dt = maindata }; 
w2.Show(); 
} 

在Window_2

public DataTable dt { get; set; } 

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    dtGrid.ItemsSource = dt.DefaultView; //dtGrid is the DataGrid 
} 

因此,這裏就是我的想法。

單擊「是」(yes_Click),maindata DataTable中的數據等同於dt DataTable(存在於Window_2中)中的數據。後者DataTable獲取maindata DataTable的數據並將其加載到DataGrid dt中。

我以爲我應該拿出我的發現來防止另一個人遇到同樣的問題。

謝謝大家。

0

你可以從窗口1的數據給窗口2所示:

var data = //your data; 
Window_2 window = new Window_2(data); 
window.Show(); 

//then in window 2 

public Window_2(var data){ 
    InitializeComponent(); 
    this._fieldWithData = data; 
} 

因此,讓一個構造函數重載你傳遞數據的地方。然後你可以通過不同窗口的數據。 StackOverflow在這裏幫助瞭解如何實際填充數據網格,大量的相關文章!希望有所幫助!

+0

Derp謝謝你的迴應。你的代碼對我有意義,但不知何故,我沒有得到預期的結果。我已經使用ASh的解決方案,它的工作 –

+0

沒問題:)很高興你找到了答案! – Markinson

-1

從一個窗口中,您可以通過名稱獲取其他窗口,然後按名稱獲取數據網格(只要您命名了所有內容)即可。

Window w = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.Name == "windowname"); 

DataGrid dg = (DataGrid)w.FindName("datagridname"); 

然後'dg'是對你想要的數據網格的引用。

相關問題