2011-05-25 22 views
7

Estoy aprendiendo sobre WPF. Ahora he llegado a encuadernar. ¿El enlace se basa en la reflexión cuando se usa INotifyPropertyChanged y es así, ¿cuál es el precio? Estoy considerando utilizar WPF para mostrar los datos que se transmiten a través de UDP, pero me temo que la sobrecarga puede ser demasiado grande en comparación con WinForms.WPF Encuadernación Overhead

+0

buena pregunta. +1 – nawfal

Respuesta

7

Aquí hay un MSDN article sobre él. Esta es una pregunta bastante común que escucho todo el tiempo.

Pero mi idea es que, a menos que se encuentre con un escenario de caso extremo, desea utilizar el enlace en WPF. Esa es la forma en que todo el sistema está diseñado.

+0

Más excelente. Gracias. – kasperhj

5

Microsoft tiene una excelente redacción en este here.

Pero la reflexión no se usa con respecto a INotifyPropertyChanged, pero es cuando se resuelven las propiedades de CLR.

Si el objeto de origen es un objeto de CLR y la propiedad de origen es una propiedad CLR , la Fundación la presentación de Windows (WPF) enlace de datos del motor tiene a su primer uso reflexión sobre el objeto fuente para obtener la TypeDescriptor, y luego consulta para un PropertyDescriptor. Esta secuencia de operaciones de reflexión es potencialmente que consume mucho tiempo desde una perspectiva de rendimiento .

+3

Vale la pena señalar que esta sobrecarga de Reflection solo se incurre cuando primero analiza el PropertyPath inicial para el enlace. Hay un PropertyPathWorker bastante complejo detrás de las escenas que guarda en caché la expresión de enlace en un formato analizado, lo que le permite reaccionar a los cambios notificados en cualquier parte de la ruta, sin tener que volver a reflejar para obtener los metadatos necesarios. –

Cuestiones relacionadas