-1
我的主窗口中有一個public void grid_refresh()
方法,它刷新我的DataGrid(主窗口的DataGrid)。現在我有另一個類(Window),它向Datagrid添加了新的元素。我沒有做的事情是訪問這個grid_refresh
方法刷新網格與新的條目,當我點擊我的另一個窗口(添加窗口)的添加按鈕。在這個其他類中執行其他類的方法wpf
主窗口代碼:
方法來開拓AddBook窗口:
private void AddBuch(object sender, RoutedEventArgs e)
{
if (Title == "Dictionary")
{
MessageBox.Show("Wählen Sie zuerst unter Ansicht eine Kategorie aus!");
}
else
{
addBuch addbuch = new addBuch(this);
addbuch.Show();
//do { } while (addbuch.ShowDialog() == true);
}
}
我想訪問的方法:
public void liste_aktualisieren()
的窗口代碼我想訪問方法來自:
public partial class addBuch : Window
{
private MainWindow mainWindow;
public addBuch(Window owner)
{
InitializeComponent();
Owner = owner;
SetProperties();
owner.IsEnabled = false;
}
private void btn_add_Click(object sender, RoutedEventArgs e)
{
if (txt_name.Text == "" | txt_isbn.Text == "" | txt_datum.Text == "" | txt_genre.Text == "" | txt_autor.Text == "" | txt_seiten.Text == "")
{
MessageBox.Show("Es sollte allen Feldern ein Wert zugewiesen werden.\nVersuchen Sie es erneut!");
}
else
{
cDictionary.Buch_hinzufuegen(txt_name.Text, txt_isbn.Text, txt_datum.Text, txt_genre.Text, txt_autor.Text, Convert.ToInt32(txt_seiten.Text));
Owner.IsEnabled = true;
//Somewhere here I want to Acess the DataGrid Refresh Method so the Datagrid in the Main Window Refreshes.
}
}
我真的不知道如何解決這個問題? 我的目的是刷新DataGrid中的btn_add_Click按下
這將通過使用MVVM和一個'ObservableCollection'很容易解決 – BradleyDotNET
您有很多選項。從字面上理解你的問題,在單擊按鈕時引發的'addBuch'增加一個'event'是最好的。在你的發佈代碼中,你有一個'mainWindow'字段,但從不初始化它;目前還不清楚爲什麼你的代碼是這樣的,但當然如果你想初始化這個字段,你可以用它直接調用這個方法。這種耦合是不好的,但如果你願意,你可以做到。您也可以使用MVVM並將VM或集合傳遞給'addBuch'構造函數,以便構造函數可以直接更新集合或調用一個'ICommand'來實現。 –