8

Comment puis-je avoir une mise à jour de grille de propriétés automatiquement lorsque l'objet de sa propriété SelectedObject change? J'ai essayé d'implémenter INotifyPropertyChanged dans ma classe mais la grille de propriété n'affiche pas réellement les nouvelles propriétés de l'objet en arrière-plan jusqu'à ce que je clique dessus.Mise à jour d'un PropertyGrid

J'ai essayé de souscrire directement à l'événement PropertyChanged de mon objet et d'appeler la méthode Refresh() du PropertyGrid lorsqu'il est appelé. Mais certaines de mes propriétés sont liées. Le fait de modifier une propriété peut provoquer plusieurs événements PropertyChanged. Cela semble fonctionner, mais je me demande toujours s'il existe une façon plus simple de le faire via DataBinding. Aussi, je voudrais éviter d'avoir le contrôle Refresh plusieurs fois après que l'utilisateur a mis à jour une seule propriété.

Alors, existe-t-il un moyen d'actualiser le PropertyGrid à partir d'événements PropertyChanged?

Répondre

0

Je ne sais pas s'il y a une façon de le faire intégré, mais est ici une suggestion si vous voulez éviter de multiples appels à Refresh pour les propriétés connexes:

Lorsqu'un événement PropertyChanged se produit, démarrer une minuterie . Si l'événement se reproduit avant la fin de la temporisation, ne faites rien. En cas Tick de la minuterie, actualisez la PropertyGrid et arrêter le chronomètre

+0

Je sais que cette réponse a deux ans, mais j'avais la même question que l'OP et je veux ajouter à cette réponse que Timer a une propriété AutoReset. Ce qui signifie que vous n'avez pas besoin d'arrêter la minuterie manuellement. :-) –

31

Essayez d'ajouter les RefreshProperties attribuent à chaque propriété qui possède des dépendances:

[RefreshProperties(RefreshProperties.All)] 

Maintenant, chaque fois que cette propriété change - il sera automatiquement rafraîchir les autres champs. Il s'agit d'une approche beaucoup plus propre que d'appeler "Refresh()" de la grille de propriétés à chaque fois.

+0

Super! Pourquoi ce n'est pas une réponse acceptée? – Dennis

+0

Parce qu'il a été posté environ 8 mois de retard. – flarn2006

+1

** Résolu presque tous les problèmes. ** 'INotifyPropertyChanged' nécessite plusieurs contrôles de tir alors que ce sortcut' RefreshProperties' contourne tout ça (plus lent, il semble sur ma machine mais semble ne jamais échouer) Merci! –