XML file importé dans ListView, sur lequel travaillé ?
Bonjour,
j'ai un fichier XML que je bind dans un ListView par la méthode suivante :
Code:
1 2 3 4
| <Window.Resources>
<!--put in Resources-->
<XmlDataProvider x:Key="myDataXML" XPath="cycling/track"/>
</Window.Resources> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Grid>
<!--if XMLDataProvider is inside <...Resources> so, use ItemsSource='{Binding Source={StaticResource xml}}'-->
<ListView x:Name="listView" ItemsSource='{Binding Source={StaticResource myDataXML}}' IsSynchronizedWithCurrentItem="True" IsMouseCaptureWithinChanged="listView_IsMouseCaptureWithinChanged">
<ListView.View>
<GridView>
<GridViewColumn Width="150">
<GridViewColumnHeader Content="Order1"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBox Text="{Binding XPath=order1}"/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn> |
les données s'affichent dans ma listView selon mes désirs.
j'ai également coder le bouton ajouter et save qui m'ajoute une ligne dans mon listview puis fais la sauvegarde dans mon XML :
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
| private void buttonAdd_Click(object sender, RoutedEventArgs e)
{
XmlDataProvider xdp = FindResource(xdpName) as XmlDataProvider;
XmlDocument doc = xdp.Document;
//creation of an attribute/branch <cycling>
XmlElement addTrack = doc.CreateElement(cyclingBranch);
//creation of an attribute/branch <track>
addTrack = doc.CreateElement(trackBranch);
/*creation of the attribute/branch
<track>
<order1></order1>
</track>
*/
XmlElement newAttribute = addTrack.AppendChild(doc.CreateElement(order1Branch)) as XmlElement;
newAttribute.AppendChild(doc.CreateTextNode(" "));
newAttribute = addTrack.AppendChild(doc.CreateElement(order2Branch)) as XmlElement;
newAttribute.AppendChild(doc.CreateTextNode(" "));
doc.DocumentElement.AppendChild(addTrack);
} |
Code:
1 2 3 4 5 6 7
| private void buttonSave_Click(object sender, RoutedEventArgs e)
{
XmlDataProvider xdp = FindResource(xdpName) as XmlDataProvider;
XmlDocument doc = xdp.Document;
doc.Save(filePath);
} |
Je suis en train de regarder pour le bouton Delete et Insert et une question me pose problème.
Comme je dois récupérer l'index de la ligne à supprimer ou celle avant l'insert d'une nouvelle ligne. Dois-je travailler directement sur les éléments de la listView, en clair, travailler sur un simple tableau, ou dois-je travailler avec les outils XML dans le code-behind (XMLDocument, XMLDataProvider, ...)
cette question est assez fondamentale et je ne sais pas trop à quoi m'en tenir...
Merci d'avance.