Compartir a través de


¿Qué son los orígenes de enlace?

En el enlace de datos, el objeto de origen de enlace hace referencia al objeto del que se obtienen datos. En este artículo se describen los tipos de objetos que puede usar como origen de enlace, como objetos CLR de .NET, XML y DependencyObject objetos.

Tipos de fuentes de vinculación

El enlace de datos de Windows Presentation Foundation (WPF) admite los siguientes tipos de origen de enlace:

Implementación de un origen de enlace en los objetos

Los objetos CLR pueden actuar como orígenes de enlace. Hay algunas cosas que debe tener en cuenta al implementar una clase para que actúe como origen de enlace.

Proporcionar notificaciones de cambios

Si usa OneWay o TwoWay vinculación, implemente un mecanismo de notificación "propiedad modificada" adecuado. El mecanismo recomendado es para que CLR o la clase dinámica implementen la INotifyPropertyChanged interfaz. Para obtener más información, vea How to: Implement Property Change Notification (.NET Framework).

Hay dos maneras de notificar a un suscriptor un cambio de propiedad:

  • Implemente la INotifyPropertyChanged interfaz.

    Este es el mecanismo recomendado para las notificaciones. INotifyPropertyChanged proporciona el evento PropertyChanged, que respeta el sistema de enlace. Al generar este evento y proporcionar el nombre de la propiedad que cambió, notificará a un destino de enlace del cambio.

  • Implemente el PropertyChanged patrón.

    Cada propiedad que necesita notificar a un destino de enlace que ha cambiado, tiene un evento correspondiente PropertyNameChanged , donde PropertyName es el nombre de la propiedad. Generas el evento cada vez que cambia la propiedad.

Si el origen de enlace implementa uno de estos mecanismos de notificación, las actualizaciones de destino se producen automáticamente. Si por algún motivo el origen del enlace no proporciona las notificaciones de cambio de propiedad adecuadas, puede usar el UpdateTarget método para actualizar la propiedad de destino explícitamente.

Otras características

En la lista siguiente se proporcionan otros puntos importantes que se deben tener en cuenta:

  • Los objetos de datos que actúan como orígenes de enlace se pueden declarar en XAML como recursos, siempre que tengan un constructor sin parámetros. De lo contrario, debes crear el objeto de datos en el código y asignarlo directamente al contexto de datos del árbol de objetos XAML, o utilizarlo como origen del enlace.

  • Las propiedades que se usan como propiedades de origen de enlace deben ser propiedades públicas de la clase. No se puede tener acceso a las propiedades de interfaz definidas explícitamente con fines de enlace, ni propiedades privadas, internas o virtuales que no tienen ninguna implementación base.

  • No puedes hacer un enlace a campos públicos.

  • El tipo de la propiedad declarada en la clase es el tipo que se pasa a la vinculación. Sin embargo, el tipo utilizado en última instancia por el enlace depende del tipo de la propiedad de destino de enlace, no de la propiedad de origen del enlace. Si hay una diferencia en el tipo, es posible que quiera escribir un convertidor para gestionar la forma en que inicialmente se pasa la propiedad personalizada a la vinculación. Para obtener más información, consulte IValueConverter.

Objetos completos como origen de enlace

Puede usar un objeto completo como origen de enlace. Especifique un origen de enlace usando la propiedad Source o DataContext, y luego proporcione una declaración de enlace en blanco: {Binding}. Los escenarios en los que esto resulta útil incluyen el enlace a objetos que son de tipo cadena, enlaces a objetos con varias propiedades que le interesan o enlaces a objetos de colección. Para obtener un ejemplo de enlace a un objeto de colección completo, vea Cómo usar el patrón de Master-Detail con datos jerárquicos (.NET Framework).

Es posible que necesite aplicar lógica personalizada para que los datos sean significativos para la propiedad enlazada de destino. La lógica personalizada puede estar en forma de un convertidor personalizado o un DataTemplate. Para obtener más información sobre los convertidores, consulte Conversión de datos. Para obtener más información sobre las plantillas de datos, consulte Información general sobre plantillas de datos (.NET Framework).

Objetos de colección como origen de enlace

A menudo, el objeto que desea usar como origen de enlace es una colección de objetos personalizados. Cada objeto actúa como origen para una instancia de un enlace repetido. Por ejemplo, puede tener una CustomerOrders colección que consta de CustomerOrder objetos, donde la aplicación recorre en iteración la colección para determinar cuántos pedidos existen y los datos contenidos en cada orden.

Puede recorrer cualquier colección que implemente la interfaz IEnumerable. Sin embargo, para configurar enlaces dinámicos para que las inserciones o eliminaciones de la colección actualicen la interfaz de usuario automáticamente, la colección debe implementar la INotifyCollectionChanged interfaz. Esta interfaz expone un evento que se debe generar cada vez que cambia la colección subyacente.

La ObservableCollection<T> clase es una implementación integrada de una colección de datos que expone la INotifyCollectionChanged interfaz. Los objetos de datos individuales de la colección deben cumplir los requisitos descritos en las secciones anteriores. Para obtener un ejemplo, vea How to Create and Bind to an ObservableCollection (.NET Framework). Antes de implementar su propia colección, considere la posibilidad de usar ObservableCollection<T> o una de las clases de colección existentes, como List<T>, Collection<T>y BindingList<T>, entre muchas otras.

Cuando se especifica una colección como origen de enlace, WPF no se enlaza directamente a la colección. En su lugar, WPF se enlaza realmente a la vista predeterminada de la colección. Para obtener información sobre las vistas predeterminadas, consulte Uso de una vista predeterminada.

Si tiene un escenario avanzado y desea implementar su propia colección, considere la posibilidad de usar la IList interfaz . Esta interfaz proporciona una colección no genérica de objetos a los que el índice puede acceder individualmente, lo que puede mejorar el rendimiento.

Requisitos de permisos en la vinculación de datos

A diferencia de .NET Framework, .NET se ejecuta con seguridad de plena confianza. Todos los enlaces de datos se ejecutan con el mismo acceso que el usuario que ejecuta la aplicación.

Consulte también