WPF网格不显示内容

时间:2017-06-04 19:45:02

标签: c# wpf datagrid

我正在使用带有网格的窗口,它从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);
    }

List应该加载到MainWindow:`

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());
    }

当你在源头看到一些古玩的事情只是因为我现在测试了数以千计的可能性。但MainWindow中的网格总是保持空白。

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

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

`

1 个答案:

答案 0 :(得分: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);
}