我正在創建一個有2個窗口的WPF應用程序。WPF:如何從不同的窗口訪問特定的DataTable
在Window_1中我有一個按鈕,用於導入excel文檔並將相應的字段存儲在DataTable中。這個excel文檔成功導入後,我想提示用戶查看文檔。如果用戶說'是',那麼加載Window_2。
在Window_2中有一個DataGrid,我希望它可以使用Window_1中的DataTable填充?
我如何填充使用存儲在數據表中Window_1數據Window_2 DataGrid中
我正在創建一個有2個窗口的WPF應用程序。WPF:如何從不同的窗口訪問特定的DataTable
在Window_1中我有一個按鈕,用於導入excel文檔並將相應的字段存儲在DataTable中。這個excel文檔成功導入後,我想提示用戶查看文檔。如果用戶說'是',那麼加載Window_2。
在Window_2中有一個DataGrid,我希望它可以使用Window_1中的DataTable填充?
我如何填充使用存儲在數據表中Window_1數據Window_2 DataGrid中
我想我已經找到了解決我的問題。 (我已經來源於灰的響應這一解決方案。)
在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中。
我以爲我應該拿出我的發現來防止另一個人遇到同樣的問題。
謝謝大家。
你可以從窗口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在這裏幫助瞭解如何實際填充數據網格,大量的相關文章!希望有所幫助!
Derp謝謝你的迴應。你的代碼對我有意義,但不知何故,我沒有得到預期的結果。我已經使用ASh的解決方案,它的工作 –
沒問題:)很高興你找到了答案! – Markinson
從一個窗口中,您可以通過名稱獲取其他窗口,然後按名稱獲取數據網格(只要您命名了所有內容)即可。
Window w = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.Name == "windowname");
DataGrid dg = (DataGrid)w.FindName("datagridname");
然後'dg'是對你想要的數據網格的引用。
在'Window_2'中創建一個屬性:'public DataTable ExcelData {get; set;}',當用戶說'是'時,賦值給該屬性:'var w2 = new Window_2 {ExcelData = myData};' – ASh
這是我正在尋找的東西。謝謝謝謝。它運作良好 –