Il est difficile de dire exactement ce qui va résoudre votre problème parce que votre description est imprécise. Vous dites:
J'ai un ListView lié à un fichier xml (un fichier journal simple).
et ce n'est pas réellement possible. Vous ne pouvez pas lier un ListView
, seulement son ItemsSource
. Et vous ne pouvez pas lier à un fichier XML, mais seulement à un objet en mémoire qui contient les données lues à partir du fichier XML. J'ai l'impression que je choisis des lentes, mais je ne le suis pas: plus vous décrivez ce que vous faites réellement, plus il vous sera facile de vous fournir une réponse utilisable.
Il semble que vous définissiez probablement un XmlDataProvider
en XAML avec son Source
défini au nom du fichier XML. Si vous définissez cela comme une ressource dans votre fenêtre principale, il va être chargé lorsque la fenêtre principale est chargée. Si la fenêtre de votre enfant a quelque chose comme
<ListView ItemsSource="{StaticResource MyXmlDocument}" .../>
il va rechercher le XmlDataProvider
en utilisant la méthode de dictionnaire de ressources Find
, et le trouver dans le dictionnaire de ressources de la fenêtre principale. Vous pouvez fermer et rouvrir la fenêtre enfant toute la journée et le XmlDataProvider
qu'elle utilise ne changera pas.
Si c'est le cas, ce dont vous avez probablement besoin est l'une de deux choses.
D'abord, vous pouvez déplacer la définition de la ressource XmlDataProvider
à XAML de la fenêtre enfant. Cela forcera la fenêtre enfant à recharger le XML chaque fois que la fenêtre enfant se charge.
Deuxièmement, vous pouvez ajouter une méthode à la fenêtre principale qui recrée la XmlDataProvider
chaque fois que les modifications du fichier XML sur le disque. (Comment savoir quand le fichier XML change, et comment déclencher la méthode dans la fenêtre principale, sont des problèmes relativement difficiles à résoudre - vous pouvez utiliser les événements FileSystemWatcher
, par exemple.) Vous devez utiliser l'extension DynamicResource
dans votre fenêtre enfant XAML si vous faites cela.) Cela rafraîchira la fenêtre enfant chaque fois que le fichier XML change - même s'il est déjà ouvert.
oh, merci. Étrange ... Je ne comprends pas pourquoi si je ferme une fenêtre, l'ItemSource reste paramétrée .. comment faire: je peux réinitialiser ItemSource? – Rick
Par 'reset' ItemsSource/DataContext voulez-vous dire 'réaffecter'? Y a-t-il un autre moyen? – epalm