DataGrid.Refresh генерирует сообщение «Ссылка на объект не установлена ​​на экземпляр объекта» в c # WPF - PullRequest
0 голосов
/ 18 мая 2019

В моем проекте WPF я отображаю данные из Списка класса в DataGrid. Каждый раз, когда информация из этого списка изменяется, DataGrid обновляется. Это работает правильно, когда новый элемент добавляется в список, когда элемент изменяется и даже работает, когда элемент удаляется. Однако, когда элемент удаляется, он также генерирует сообщение типа MessageBox, в котором говорится, что «ссылка на объект не установлена ​​для экземпляра объекта». Кажется, что функция работает полностью так, как задумано, но мне нужно, чтобы это всплывающее сообщение перестало появляться.

private void VerwijderGezinButton_Click(object sender, RoutedEventArgs e)
{
    if (DataGridXML.SelectedIndex < 0)
        return;

    Gezin gezin = (Gezin)DataGridXML.SelectedItem;
    Gezinnen.Remove(gezin);
    DataGridPersonen.SelectedIndex = -1;

    DataGridXML.Items.Refresh();
    SaveToFile();
}

DataGridPersonen - это вторая DataGrid, которая отображает список другого класса внутри отдельных экземпляров элемента в списке gezinnen.

Гезиннен назначается в классе как этот

internal List<Gezin> Gezinnen { get; set; } = new List<Gezin> { };

Гезин определяется как таковой

[Serializable]
class Gezin
{
    public string Naam { get; set; }
    public string Prijs { get; set; }
    public int Kinderen { get; set; }
    public List<Volwassene> Volwassenen { get; set; }
    public Gezin(string naam, int aantalKinderen)
    {
        Naam = naam;
        Volwassenen = new List<Volwassene> { };
        Prijs = "n/a";
        Kinderen = aantalKinderen;
    }

    public void VoegVolwasseneToe(string naam, DateTime geboorteDatum)
    {
        Volwassenen.Add(new Volwassene(naam, geboorteDatum.ToShortDateString()));
    }
    public void VerwijderVolwassene(Volwassene persoon)
    {
        try
        {
            Volwassenen.Remove(persoon);
        }
        catch (Exception err)
        {
            MessageBox.Show("ERROR:\n\n" + err.Message);
        }
    }

}

и Вольвассен

[Serializable]
class Volwassene
{
    public string Voornaam { get; set; }
    public string GeboorteDatum { get; set; }
    public Volwassene(string voornaam, string geboorteDatum)
    {
        Voornaam = voornaam;
        GeboorteDatum = geboorteDatum;
    }
}

Когда я использую режим отладки Visual Studio и запускаю код построчно, это сообщение появляется точно на DataGridXML.Refresh(); Кажется, что сами переменные изменяются правильно при проверке в режиме отладки.

Мне нужно найти более подробное сообщение об ошибке или способ остановить это сообщение.

...