在另一个类wpf中执行另一个类的方法

时间:2017-06-15 23:34:07

标签: c# wpf xaml datagrid refresh

我的主窗口中有一个public void grid_refresh()方法,用于刷新我的DataGrid(主窗口的DataGrid)。现在我有另一个类(Window),它将新元素添加到Datagrid。我没做的就是访问这个grid_refresh方法,当我从其他窗口(添加窗口)点击添加按钮时,用新条目刷新网格。

主窗口代码:

打开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.
        }
    }

我不确定如何解决这个问题...... 我的目的是刷新按下btn_add_Click的时刻的Datagrid

1 个答案:

答案 0 :(得分:0)

由于您正在注入addBuch窗口并引用MainWindow,因此您可以通过此引用调用该方法:

public partial class addBuch : Window
{
    private MainWindow mainWindow;

    public addBuch(MainWindow owner) //<--
    {
        InitializeComponent();
        Owner = owner;
        SetProperties();
        owner.IsEnabled = false;
        mainWindow = owner; //<---
    }

    private void btn_add_Click(object sender, RoutedEventArgs e)
    {
        //...
        mainWindow.grid_refresh();
    }
}