WPF网格未显示内容

fafcakar  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(119)

我正在使用一个带有网格的窗口,它从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表示网格具有Content。稍后在刷新方法中的第二个MsgBox中,它说它是空的?!
当我在第一个窗口中加载列表时,它就工作了。网格已启用自动列。

mo49yndu

mo49yndu1#

您正在创建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);
}

相关问题