Sto tentando di associare un DataGrid Silverlight ai risultati di una chiamata di servizio WCF. Non vedevo i dati visualizzati nella griglia, quindi quando ho eseguito il debugger, ho notato che XDocument.Descendants() non restituiva alcun elemento anche quando stavo passando un nome di elemento valido. Ecco l'XML che viene passato indietro dal servizio:XDocument.Descendants() non restituisce alcun elemento
<ArrayOfEmployee xmlns="http://schemas.datacontract.org/2004/07/Employees.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
<BirthDate>1953-09-02T00:00:00</BirthDate>
<EmployeeNumber>10001</EmployeeNumber>
<FirstName>Georgi</FirstName>
<Gender>M</Gender>
<HireDate>1986-06-26T00:00:00</HireDate>
<LastName>Facello</LastName>
</Employee>
<Employee>
<BirthDate>1964-06-02T00:00:00</BirthDate>
<EmployeeNumber>10002</EmployeeNumber>
<FirstName>Bezalel</FirstName>
<Gender>F</Gender>
<HireDate>1985-11-21T00:00:00</HireDate>
<LastName>Simmel</LastName>
</Employee>
</ArrayOfEmployee>
E qui è il metodo che uso per caricare i risultati in una collezione di oggetti anonimi, utilizzando LINQ to XML, e quindi associare la collezione alla griglia .
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs args)
{
if (args.Error != null) return;
var xml = XDocument.Parse(args.Result);
var employees = from e in xml.Descendants("Employee")
select new
{
EmployeeNumber = e.Element("EmployeeNumber").Value,
FirstName = e.Element("FirstName").Value,
LastName = e.Element("LastName").Value,
Birthday = e.Element("BirthDate").Value
};
DataGrid.SelectedIndex = -1;
DataGrid.ItemsSource = employees;
}
Qualsiasi idea del perché xml.Descendants("Employee")
non restituisce nulla?
Grazie!
Avevi ragione, dovevo includere lo spazio dei nomi. Grazie per l'aiuto! –