Esta es un área compleja; el siguiente es un desglose del enlace de winforms, pero entiendo que el enlace de WPF no es tan diferente;
- dado un objeto, el código de unión primero que va a hacer es buscar
IListSource
- y si es así utilizar GetList()
para conseguir la unión real (esto es como una tabla de datos se convierte en una vista de datos con fines de unión)
- después de eso, la fuente generalmente se comprueba para
ITypedList
; esto actúa como una forma flexible de obtener pseudo-propiedades (GetItemProperties()
) representadas por el modelo; datos-view implementa ITypedList
, creando pseudo-propiedades por ejemplo
- de lo contrario, podría ser posible identificar un tipo obvio para los datos, lo que puede significar:
- en busca de un indizador de la forma
public SomeType this[int index] {get;}
- observar que la mayoría colecciones se satisfacen esta
- (no realizado por winforms, pero podría ser para WPF) resolver a través de la reflexión del
T
en cualquiera IList<T>
o IEnumerable<T>
si el objeto implementa las interfaces
- que toman el primer objeto (si lo hay) de la sorce, y usando
GetType()
- una vez que se conoce un tipo,
TypeDescriptor.GetProperties(type)
se puede utilizar para obtener propiedades; en muchos casos esto será por reflexión, pero también es posible agregar una capa indirecta (a través del TypeDescriptionProvider
) para suministrar propiedades para un tipo (esto se puede agregar en tiempo de ejecución, que puede ser muy conveniente)
- en el caso de enlace individual (no enlace de lista), también hay
TypeDescriptor.GetProperties(obj)
- además de reflection y TypeDescriptionProvider
, esto también tiene soporte para ICustomTypeDescriptor
que puede ser implementado por un objeto individual para proporcionar propiedades personalizadas en tiempo de ejecución (muy similar a TypeDescriptionProvider
, pero con el individuo objeto que asume la responsabilidad de las propiedades)
No sé exactamente cuánto de esto se aplica al enlace de WPF, pero estoy bastante seguro de que elEl procesamiento dey ITypedList
es idéntico. Desde la memoria, la mayoría (¿todas?) De las estrategias de winforms funcionarán en WPF, por lo que podría ser eso y los cambios son adicionales ganchos.
Compruebe esto http: // stackoverflow.com/questions/5488014/in-wpf-are-binding-path-and-binding-really-equal, http://stackoverflow.com/questions/3504480/when-to-use-path-in-wpf-binding y http://stackoverflow.com/questions/4742449/new-to-wpf-data-binding –
@Sandeep GB Esa no era mi pregunta. Sé cómo hacer enlaces, quiero saber cómo DataGrid lo hace internamente con cualquier objeto. – Vale