SoftwareSavant
SoftwareSavant

Reputation: 9767

My WPF DataGrid won't populate with data

I am not sure what I am doing wrong, but my dataGrid won't populate. It took me a bleeping hour to debug linq, but I figured out that it was indeed working...

        foreach (XElement elm in xDocument.Element("ArrayOfPopulation").Elements("Population")) {
            Console.Write(elm.Element("id").Value+ " | ");
            Console.Write(elm.Element("name").Value+ " | ");
            Console.WriteLine(elm.Element("description").Value);
        }

The above code shows that I am infact getting values out of linq...

3 | CHF | FR Congestive Heart Failure
2 | COPD | FR Chronic Obstructive Pulmonary Disease

But down below my model is null? I can't figure out what it could be? It is not like I am getting null values. I don't think it has to do with wpf data binding, but I am stumped on what it could be.

        try {
            XElement elem = xDocument.Element("ArrayOfPopulation");
            popModel = 
                xDocument
                .Element("ArrayOfPopulation")
                .Elements("Population")
                .Select(template => new PopulationModel {
                    populationID = template.Element("id").Value,
                    PopName = template.Element("name").Value,
                    description = template.Element("description").Value,
                    populationType = template.Element("owner").Element("type").Value,
                    isActive = Boolean.Parse(template.Element("isActive").Value)
                })as ObservableCollection<PopulationModel>;
        }

Upvotes: 0

Views: 79

Answers (1)

Dave Williams
Dave Williams

Reputation: 2246

I don't think you can cast to observable collection... You need to pass your collection to the constructor of ObservableCollection

try {
    XElement elem = xDocument.Element("ArrayOfPopulation");
    popModel = 
        xDocument
        .Element("ArrayOfPopulation")
        .Elements("Population")
        .Select(template => new PopulationModel {
            populationID = template.Element("id").Value,
            PopName = template.Element("name").Value,
            description = template.Element("description").Value,
            populationType = template.Element("owner").Element("type").Value,
            isActive = Boolean.Parse(template.Element("isActive").Value)
        });
    var popModelCollection = new ObservableCollection<PopulationModel>(popModel);
}

Upvotes: 1

Related Questions