Quelle est la différence entre une propriété de dépendance (personnalisée) et une propriété jointe dans WPF? Quelles sont les utilisations pour chacun? Comment les implémentations diffèrent-elles généralement?Quelle est la différence entre une propriété de dépendance et une propriété jointe dans WPF?
Répondre
Les propriétés attachées sont un type de propriété de dépendance. La différence est dans la façon dont ils sont utilisés.
Avec une propriété attachée, la propriété est définie sur une classe qui n'est pas la même classe que celle pour laquelle elle est utilisée. Ceci est généralement utilisé pour la mise en page. De bons exemples sont Panel.ZIndex ou Grid.Row - vous l'appliquez à un contrôle (par exemple: Button), mais il est en fait défini dans Panel ou Grid. La propriété est "attachée" à l'instance du bouton.
Cela permet à un conteneur, par exemple, de créer des propriétés pouvant être utilisées sur n'importe quel élément d'interface. En ce qui concerne les différences de mise en œuvre, il s'agit simplement d'utiliser Register et RegisterAttached lorsque vous définissez la propriété.
Les propriétés attachées sont essentiellement destinées aux éléments du conteneur. Si vous avez une grille et que vous avez grid.row, ceci est considéré comme une propriété attachée à un élément de grille. Vous pouvez également utiliser cette propriété dans texbox, bouton etc pour définir sa place dans la grille.
La propriété de dépendance est comme la propriété appartient essentiellement à une autre classe et est utilisée dans une autre classe. Par exemple: comme si vous avez un rectangle ici hauteur et la largeur sont des propriétés régulières du rectangle, mais gauche et le haut sont la propriété de dépendance comme il appartient à la classe Canvass.
Les propriétés attachées sont un type spécial de DependencyProperties. Ils vous permettent d'attacher une valeur à un objet qui ne connaît rien à propos de cette valeur. Un bon exemple pour ce concept sont les panneaux de disposition. Chaque panneau de disposition a besoin de données différentes pour aligner ses éléments enfants. Le Canvas a besoin de haut et de gauche, DockPanel a besoin de Dock, etc. Puisque vous pouvez écrire votre propre panneau de disposition, la liste est infinie. Donc, vous voyez, il n'est pas possible d'avoir toutes ces propriétés sur tous les contrôles WPF. Les solutions sont des propriétés jointes. Ils sont définis par le contrôle qui a besoin des données d'un autre contrôle dans un contexte spécifique. Par exemple, un élément aligné par un panneau de disposition parent.
Je pense que vous pouvez définir la propriété attachée dans la classe elle-même ou vous pouvez le définir dans une autre classe. Nous pourrions toujours utiliser la propriété jointe pour étendre les contrôles Microsoft standard. Mais la propriété de dépendance, vous le définissez dans votre propre contrôle personnalisé. par exemple. Vous pouvez hériter votre contrôle d'un contrôle standard et définir une propriété de dépendance dans votre propre contrôle et l'utiliser. Cela équivaut à définir une propriété attachée et utiliser cette propriété attachée dans le contrôle standard.
Mais quelle est exactement la différence ?! D'après ce que j'ai vu, vous pouvez attacher une propriété inaccessible à un autre via le code (je pense que cela est bloqué dans XAML cependant.) Peut-être que c'est la différence? – MarqueIV