Vue d’ensemble des sources de liaison (WPF .NET)

Dans la liaison de données, l’objet de source de liaison fait référence à l’objet à partir duquel vous obtenez des données. Cet article décrit les types d’objets que vous pouvez utiliser comme source de liaison, comme les objets CLR .NET, xml et DependencyObject les objets.

Types de sources de liaison

la liaison de données Windows Presentation Foundation (WPF) prend en charge les types de sources de liaison suivants :

Implémenter une source de liaison sur vos objets

Vos objets CLR peuvent devenir des sources de liaison. Il existe quelques éléments à prendre en compte lors de l’implémentation d’une classe pour servir de source de liaison.

Fournir des notifications de modification

Si vous utilisez OneWay une liaison ou, TwoWay implémentez un mécanisme de notification « propriété modifiée » approprié. Le mécanisme recommandé est que la classe CLR ou dynamique implémente l’interface INotifyPropertyChanged . Pour plus d’informations, consultez Guide pratique pour implémenter la notification de modification de propriété (.NET Framework).

Il existe deux façons d’informer un abonné d’un changement de propriété :

  1. Implémentez l'interface INotifyPropertyChanged.

    Il s’agit du mécanisme recommandé pour les notifications. fournit INotifyPropertyChanged l’événement PropertyChanged , que le système de liaison respecte. En soulevant cet événement et en fournissant le nom de la propriété qui a été modifiée, vous notifierez la modification à une cible de liaison.

  2. Implémentez le PropertyChanged modèle.

    Chaque propriété qui doit notifier une cible de liaison qu’elle est modifiée a un événement correspondant PropertyNameChanged , où PropertyName est le nom de la propriété. Vous déclenchez l’événement chaque fois que la propriété est modifiée.

Si votre source de liaison implémente un de ces mécanismes de notification, les mises à jour de la cible sont effectuées automatiquement. Si, pour une raison quelconque, votre source de liaison ne fournit pas les notifications de modification de propriété appropriées, vous pouvez utiliser la UpdateTarget méthode pour mettre à jour la propriété cible explicitement.

Autres caractéristiques

La liste suivante fournit d’autres points importants à noter :

  • Les objets de données qui servent de sources de liaison peuvent être déclarés en XAML en tant que ressources, à condition qu’ils aient un constructeur sans paramètre. Sinon, vous devez créer l’objet de données dans le code et l’affecter directement au contexte de données de votre arborescence d’objets XAML ou en tant que source de liaison de liaison.

  • Les propriétés que vous utilisez comme propriétés source de liaison doivent être des propriétés publiques de votre classe. Les propriétés d’interface définies explicitement ne sont pas accessibles à des fins de liaison, ni les propriétés protégées, privées, internes ou virtuelles qui n’ont aucune implémentation de base.

  • Vous ne pouvez pas lier à des champs publics.

  • Le type de la propriété déclarée dans votre classe est le type qui est passé à la liaison. Toutefois, le type utilisé par la liaison varie en fonction du type de propriété de cible de liaison, et non de la propriété de source de liaison. S’il existe une différence de type, vous pouvez écrire un convertisseur pour gérer la façon dont votre propriété personnalisée est initialement passée à la liaison. Pour plus d’informations, consultez IValueConverter.

Objets entiers en tant que source de liaison

Vous pouvez utiliser un objet entier comme source de liaison. Spécifiez une source de liaison à l’aide de la SourceDataContext propriété ou, puis fournissez une déclaration de liaison vide : {Binding}. Les scénarios dans lesquels cela est utile incluent la liaison à des objets de type chaîne, la liaison à des objets avec plusieurs propriétés qui vous intéressent ou la liaison à des objets de collection. Pour obtenir un exemple de liaison à un objet de collection entier, consultez How to Use the Master-Detail Pattern with Hierarchical Data (.NET Framework) .

Vous devrez peut-être appliquer une logique personnalisée afin que les données soient significatives pour votre propriété cible liée aux données. La logique personnalisée peut se présenter sous la forme d’un convertisseur personnalisé ou d’un DataTemplate. Pour plus d’informations sur les convertisseurs, consultez Conversion de données. Pour plus d’informations sur les modèles de données, consultez Vue d’ensemble de la création de modèles de données (.NET Framework).

Objets de collection en tant que source de liaison

Souvent, l’objet que vous souhaitez utiliser comme source de liaison est une collection d’objets personnalisés. Chaque objet sert de source pour une instance d’une liaison répétée. Par exemple, vous pouvez avoir une CustomerOrders collection composée d’objets CustomerOrder , où votre application itère sur la collection pour déterminer le nombre de commandes existantes et les données contenues dans chaque commande.

Vous pouvez énumérer n’importe quelle collection qui implémente l’interface IEnumerable. Toutefois, pour configurer des liaisons dynamiques afin que les insertions ou les suppressions dans la collection mettent à jour l’IU automatiquement, la collection doit implémenter l’interface INotifyCollectionChanged. Cette interface expose un événement qui doit être déclenché chaque fois que la collection sous-jacente est modifiée.

La ObservableCollection<T> classe est une implémentation intégrée d’une collection de données qui expose l’interface INotifyCollectionChanged . Les objets de données individuels dans la collection doivent satisfaire les spécifications décrites dans les sections précédentes. Pour obtenir un exemple, consultez How to Create and Bind to an ObservableCollection (.NET Framework). Avant d’implémenter votre propre collection, envisagez d’utiliser ObservableCollection<T> ou l’une des classes de collection existantes, telles que List<T>, Collection<T>et BindingList<T>, parmi bien d’autres.

Lorsque vous spécifiez une collection comme source de liaison, WPF ne se lie pas directement à la collection. Au lieu de cela, WPF est lié à l’affichage par défaut de la collection. Pour plus d’informations sur les vues par défaut, consultez Utilisation d’une vue par défaut.

Si vous avez un scénario avancé et que vous souhaitez implémenter votre propre collection, envisagez d’utiliser l’interface IList . Cette interface fournit une collection non générique d’objets qui peuvent être consultés individuellement par l’index, ce qui peut améliorer les performances.

Exigences d’autorisation dans la liaison de données

Contrairement au .NET Framework, .NET s’exécute avec une sécurité de confiance totale. Toutes les liaisons de données s’exécutent avec le même accès que l’utilisateur exécutant l’application.

Voir aussi