WPF 网格不显示内容

问题描述 投票:0回答:1

我正在使用带有网格的窗口,它从 MongoDB 加载对象。这些对象包含列表。现在我想从这些对象之一加载一个列表。这是来自窗口的来源:

    public void btn_load_Click(object sender, RoutedEventArgs e)
    {
        MainWindow M = new MainWindow();
       
        ArtikelLaden();
        M.RefreshGrid();

        Close();
        
    }        
    public void ArtikelLaden()
    {

        MainWindow M = new MainWindow();
        rowindexArtikel = dg_Artikel.SelectedIndex;
        Artikel B = new Artikel();
        B = artikelList[rowindexArtikel];
        M.loadArtikel(B);
    }

列表应该加载到主窗口中:

public void loadArtikel(Artikel B)
    {
        dg_test.ItemsSource = null;
        dg_test.ItemsSource = B.kaufList;
        dg_test.Items.Refresh();
        MessageBox.Show(dg_test.HasItems.ToString());
        MessageBox.Show(dg_test.Items.Count.ToString());

        dg_Teile.ItemsSource = null;
        dg_Teile.ItemsSource =B.teilList;
        dg_Teile.Items.Refresh();

        //dg_Teile.Items.Refresh();
        //dg_BauGrp.ItemsSource = B.bauList ;
    }
    public void RefreshGrid()
    {
        //dg_Kaufteile.UpdateLayout();
        //dg_Kaufteile.Items.Refresh();
        //dg_Teile.UpdateLayout();
        MessageBox.Show(dg_Kaufteile.HasItems.ToString());
        MessageBox.Show(dg_Kaufteile.Items.Count.ToString());
    }

当你在源代码中看到一些奇怪的东西时,只是因为我现在已经测试了数千种可能性。但主窗口中的网格始终保持为空。

第一个MsgBox表示网格有内容。后来在刷新方法的第二个 MsgBox 中它说它是空的?!

当我在第一个窗口中加载列表时,它可以工作。网格启用了自动列。

c# wpf datagrid
1个回答
0
投票

您正在创建

MainWindow
的新实例,但您可能想要访问屏幕上看到的现有实例。试试这个:

public void btn_load_Click(object sender, RoutedEventArgs e)
{
    MainWindow M = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();

    ArtikelLaden(M);
    M.RefreshGrid();

    Close();
}

public void ArtikelLaden(MainWindow M)
{
    rowindexArtikel = dg_Artikel.SelectedIndex;
    Artikel B = new Artikel();
    B = artikelList[rowindexArtikel];
    M.loadArtikel(B);
}
© www.soinside.com 2019 - 2024. All rights reserved.