2011-05-25 4 views
7

J'apprends à propos de WPF. Je suis maintenant venu à contraignant. Est-ce que la reliure repose sur la réflexion lors de l'utilisation INotifyPropertyChanged et est donc, quel est le prix? J'envisage d'utiliser WPF pour afficher les données en streaming via UDP, mais je crains que les frais généraux soient trop élevés par rapport à WinForms.Frais généraux de liaison WPF

+0

bonne question. +1 – nawfal

Répondre

7

Voici un MSDN article à ce sujet. C'est une question assez commune que j'entends tout le temps. Mais à mon avis, sauf si vous êtes confronté à un scénario sérieux, vous voulez utiliser la liaison dans WPF. C'est ainsi que tout le système est conçu.

+0

Le plus excellent. Je vous remercie. – kasperhj

5

Microsoft a un grand écrire sur ce here.

Mais la réflexion n'est pas utilisée par rapport à INotifyPropertyChanged, mais est lors de la résolution des propriétés CLR.

Si l'objet source est un objet CLR et la propriété source est un CLR propriété, le moteur de liaison de données Foundation (WPF) Windows Presentation a d'abord la réflexion d'utilisation sur l'objet source pour obtenir la TypeDescriptor, puis recherchez un PropertyDescriptor. Cette séquence d'opérations de réflexion est potentiellement très longue d'un point de vue performance .

+3

Il est important de noter que cette surcharge de réflexion n'est encourue que lorsque vous analysez d'abord le PropertyPath initial pour la liaison. Il y a un PropertyPathWorker assez complexe en coulisses qui met en cache l'expression de liaison sous une forme analysée, ce qui lui permet de réagir aux changements notifiés n'importe où sur le chemin, sans devoir refaire de Reflect pour obtenir les métadonnées nécessaires. –

Questions connexes