2017-01-13 6 views

Répondre

2

Les comportements encapsulent éléments fonctionnels dans un composant réutilisable.

contrôle sur mesure sontplus de travail que sur les comportements personnalisés (boîte blanche vs boîte noire) Certaines choses que vous devez faire un contrôle personnalisé, par exemple les membres protégés d'accès.

2

Comportement étend les fonctionnalités de contrôle

contrôles personnalisés personnaliser le visuel de contrôle

2

Un comportement peut être utilisé pour étendre les fonctionnalités d'un contrôle à faire quelque chose qu'il ne peut pas faire sur lui-même sans avoir à modifier ou ré-implémenter l'ensemble du contrôle.

Considérons par exemple le contrôle TreeView intégré dans WPF. Il a une propriété SelectedItem qui est en lecture seule, ce qui signifie que vous ne pouvez pas le lier de façon bidirectionnelle à une propriété de votre modèle de vue. Si vous ne voulez pas implémenter votre propre contrôle TreeView personnalisé à cause de cela - ce que vous n'avez probablement pas :) - vous pouvez résoudre ce problème en implémentant un comportement personnalisé qui définit la valeur de votre propriété source à chaque fois que la valeur de la propriété cible change et vice versa. S'il vous plaît se référer au poste de blog suivant pour plus d'informations à ce sujet et un exemple: https://blog.magnusmontin.net/2014/01/30/wpf-using-behaviours-to-bind-to-readonly-properties-in-mvvm/

L'article suivant devrait également fournir une bonne introduction à behvaiours attachés: https://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF

Ainsi, un comportement est fondamentalement un morceau de code qui peut être attaché à un élément du balisage XAML d'une vue via les propriétés attachées et ajouter des fonctionnalités supplémentaires à cet élément.

Un contrôle est un composant d'interface utilisateur qui encapsule certaines fonctionnalités et possède un modèle tel que, par exemple, un bouton ou un contrôle ListBox.

+0

Vous n'avez pas besoin de réimplémenter TreeView dans ce cas, il vous suffit de lier IsSelected sur votre élément de liste viewmodel à IsSelected dans le conteneur d'éléments en remplaçant le style. Cette façon de faire est conviviale pour la virtualisation (dès que le conteneur d'éléments est généré, il est sélectionné). C'est l'utilisation prévue dans de nombreux contrôles d'éléments et c'est pourquoi SelectedItem est souvent en lecture seule. –