LINQ to XML + WPF: lier les donnés
Bonjour tout le monde !
Je tente de lié des donnée d'un fichier XML vers mon interface WPF grâce à Linq To XML. Ci-dessous, l'erreur retourné et les codes:
Code:
1 2
|
The type of the expression in the select clause is incorrect. Type inference failed in the call to 'Select'. |
Code:
1 2 3 4
|
IEnumerable<string> datas = from d in XDocument.Load(@"Resources\limits.xml").Descendants("limits")
where (int)d.Element("ID") == id
select d.Elements; |
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<StackPanel>
<TextBlock Text="{Binding XPath=explicationTitle}" FontWeight="Bold" Margin="10" />
<TextBlock Text="{Binding XPath=explicationDescription}" Margin="10" />
<TextBlock Text="Aucune" FontWeight="Bold" Margin="10" />
<TextBlock Text="{Binding XPath=explicationLimiteAucune}" Margin="10" />
<TextBlock Text="Modérée" FontWeight="Bold" Margin="10" />
<TextBlock Text="{Binding XPath=explicationLimiteModeree}" Margin="10" />
<TextBlock Text="Totale" FontWeight="Bold" Margin="10" />
<TextBlock Text="{Binding XPath=explicationLimiteTotale}" Margin="10" />
</StackPanel> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<Limits xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Limit>
<Id>1</Id>
<title>Ma première limite :)</title>
<description>NFC West</description>
<explication>
information
de
bla blabla
</explication>
<explicationTitle>Poney</explicationTitle>
<explicationDescription>Description de la limitation</explicationDescription>
<explicationLimiteAucune>Aucune limite..tout va bien :)</explicationLimiteAucune>
<explicationLimiteModeree>Quelques soucis, rien de grave</explicationLimiteModeree>
<explicationLimiteTotale>Gros soucis :)</explicationLimiteTotale>
</Limit>
<Limit>
<Id>2</Id>
<title>Limitation 2</title>
<description>NFC West</description>
<explication>
information 2
de 2
bla blabla 2 2 2
</explication>
<explicationTitle>Poney</explicationTitle>
<explicationDescription>Description de la limitation</explicationDescription>
<explicationLimiteAucune>Aucune limite..tout va bien :)</explicationLimiteAucune>
<explicationLimiteModeree>Quelques soucis, rien de grave</explicationLimiteModeree>
<explicationLimiteTotale>Gros soucis :)</explicationLimiteTotale>
</Limit>
</Limits> |
Si vous avez une idée de comment gérer ce petit soucis, je suis preneur :)
Bien à vous !
DataBinding + Linq to XML : solutions
Solution d'un DataBinding WPF Linq To XML:
c#
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
try
{
XDocument _file = XDocument.Load(@"Resources\details.xml");
var helps = from item in _file.Descendants("Detail")
where item.Element("Id").Value == id.ToString()
select item;
Details _details = new Details();
foreach (var help in helps)
{
_details._title = help.Element("title").Value;
_details._explication = help.Element("explication").Value;
_details._none = help.Element("none").Value;
_details._moderate = help.Element("moderate").Value;
_details._total = help.Element("total").Value;
}
this.WPFDetails.DataContext = _details;
}
catch (Exception err)
{
MessageBox.Show(err.Message, "Erreur lors de chargement du fichier d'aide");
} |
XML:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?xml version="1.0" encoding="utf-8" ?>
<Details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Detail>
<Id>1</Id>
<title>Poney</title>
<explication>Description de la limitation</explication>
<none>Aucune limite..tout va bien :)</none>
<moderate>Quelques soucis, rien de grave</moderate>
<total>Gros soucis :)</total>
</Detail>
<Detail>
<Id>2</Id>
<title>Poney</title>
<explication>Description de la limitation</explication>
<none>Aucune limite..tout va bien :)</none>
<moderate>Quelques soucis, rien de grave</moderate>
<total>Gros soucis :)</total>
</Detail>
</Details> |
WPF:
Code:
1 2 3 4 5
|
<Window x:Class="ICF_Form.WDetails"
x:Name="WPFDetails"
...
<TextBlock Text="{Binding _title}" x:Name="myTextHelp" FontWeight="Bold" Margin="10" /> |