2010-11-07 27 views
7

He estado aprendiendo WPF durante unos meses y tengo curiosidad por una cosa. ¿Cómo funciona un enlace realmente? Quiero decir, qué pasa, bajo el capó. No espero que nadie aquí brinde una explicación detallada, pero tal vez un buen recurso o enlace donde leer sobre algo como esto. He estado buscando y buscando en Google para esto, pero no hay buenos éxitos hasta el momento.¿Cómo funciona un enlace?

Me doy cuenta de que para comprender esto, probablemente tendrías que entender la mayoría de las partes del framework pero un poco de comprensión básica sería genial.

Gracias

Respuesta

2

Hay dos aspectos a considerar en el enlace, obtener valores en la interfaz de usuario y hacer que se notifique a la UI de los cambios en su DataContext.

Básicamente puede vincular casi cualquier cosa a cualquier objeto POCO, el objeto no necesita implementar nada especial. La restricción con objetos simples es que el objetivo de enlace no se especificará cuando cambie el valor subyacente.

cambios de propiedad son propagados a través de uno de los tres mechanisims:

Dependencia Propiedades: notificará al sistema de unión cuando su valor cambia, también se pueden utilizar para las animaciones.

INotifyPropertyChanged: Si el enlace es a una propiedad de un objeto que implementa INotifyPropertyChanged, el sistema de enlace buscará suscribirse al evento PropertyChanged y actualizará el destino de enlace, cuando se genera este evento, los nombres de propiedad se envían como cadenas.

* Propiedad * acontecimientos cambiaron: Lo último que encuadernaciones buscará será un evento con un nombre igual a la propiedad de origen y cambió en el extremo, por lo que una propiedad Name tendría que tener un evento público denominado NameChanged , esto permite que WPF se vincule a clases anteriores de .NET como 1.1.

+0

Gracias Ben! Muy buena información – ImJames

0

Esta es una pregunta bastante difícil de responder. Creo que hay aproximadamente dos aspectos en una respuesta. El primero es la documentación. Si revisa toda la documentación de expresiones vinculantes, incluyendo cómo se compilan las rutas y p. las clases de ayuda como BindingOperations, pueden encontrar un montón. Si eso no es suficiente, siempre puede sumergirse en el código descargándolo del sitio Microsoft Source Initiative.

3

No sé mucho sobre los detalles de la vinculación en WPF, pero si es el mismo principio detrás de la vinculación en System.ComponentModel y Windows Forms, un artículo de blog que escribí recientemente podría ayudar a arrojar algo de luz sobre usted:

Some Background on Windows Forms Data Binding

Básicamente, orígenes de enlace tienen que implementar IList, IListSource, ITypedList o IBindingList. Mediante reflexión o definición explícita, las fuentes de datos exponen objetos PropertyDescriptor que describen sus propiedades vinculables. Los nombres de estas propiedades (que pueden ser o no nombres de propiedades reales en los objetos contenidos en el origen de datos, por ejemplo, en DataTable, son nombres de columna) se comparan con la propiedad DisplayMember/ValueMember o, en el caso de WPF, la ruta de enlace.

+0

Esto es genial, gracias! ¡Lo comprobaré! – ImJames

+0

¿Cómo se relaciona esto con WPF Binding? – benPearce

+0

@benPearce Me imagino que WPF utiliza los mismos conceptos subyacentes de vinculación de datos definidos en 'System.ComponentModel' - funcionalidad que se utiliza en todo el .NET Framework. –

Cuestiones relacionadas