2009-07-09 3 views
1

J'essaie d'implémenter un événement de modification de propriété (ou ce qui est approprié) dans mon projet wpf et j'essaie de trouver la meilleure façon de procéder.Problème avec la liaison de données WPF mais vous devez deviner quel type

J'ai cet en-tête où il y a une icône d'expansion/réduction et dans ma fenêtre, je peux avoir plusieurs en-têtes. Je veux que la valeur par défaut soit réduite quand tous les en-têtes sont listés au début mais quand l'utilisateur développe certains en-têtes (pas tous), quand je clique sur 'refresh' sur ma fenêtre pour mettre à jour les en-têtes, je veux c'était avant qu'il soit rafraîchi. Donc, si l'en-tête 1 et 2 ont été développés, et 3 et 4 ont été réduits, quand le bouton d'actualisation est pressé, je veux qu'il se souvienne de cela. Le problème est que lorsque je clique sur 'rafraîchir', il actualise l'ensemble de la vue pour qu'elle perde l'information. J'essaye d'avoir une collection dans la classe réelle qui héberge ces en-têtes pour stocker les informations ainsi quand un en-tête est développé ou réduit, il avertira la collection qu'un expansé/effondré a renvoyé et je veux mettre à jour cette valeur dans la collection ainsi quand le bouton d'actualisation est cliqué, je peux le comparer avec un GUID si l'en-tête était déjà présent dans la vue avant l'actualisation, mettre à jour le nouvel entête entrant avec l'information stockée de expand/collapse le rafraîchissement, il tiendra son état.

Répondre

1

Pour les instances individuelles des classes liées, vous souhaitez implémenter l'interface INotifyPropertyChanged.

De même, sur la collection dans laquelle les en-têtes sont stockés, vous souhaiterez implémenter l'interface INotifyCollectionChanged pour indiquer quand la collection elle-même change.

Ces deux interfaces, si elles sont implémentées correctement, doivent permettre à vos objets (et aux collections dans lesquelles ils se trouvent) d'être correctement liés par le système de liaison de données WPF.

+0

pour INotifyCollectionChanged vérifier ObservableCollection

+0

Hey casperOne, Merci beaucoup pour la réponse rapide. Je pensais, est-il possible d'utiliser l'interface INotifyPropertyChanged lorsque la propriété booléenne que je possède n'est même pas présente dans le fichier .xaml? Un utilisateur clique sur un '[+]' pour développer et l'icône passe à '[-]' et lorsque l'en-tête est développé, j'essaie de définir la propriété 'IsExpanded' sur TRUE et chaque fois que cette propriété change, Je veux notifier à la classe qui héberge les en-têtes (notifier à aucune vue). Merci beaucoup! –

+0

@Dan: Vous pourriez, mais si ce n'est pas dans le XAML alors vous ne serez pas en mesure de se lier à la valeur. Cela implique également que votre conception est un peu sale, en ce sens que vous n'avez pas cette propriété exposée (et vous devriez l'exposer séparément des données pour lesquelles l'en-tête est). – casperOne

Questions connexes