Nous devons créer dynamiquement (c'est-à-dire pendant l'exécution, via code-behind) les UserControls et les positionner sur un canevas. Nous souhaitons lier la position (Canvas.Left et Canvas.Top) et la largeur de ces contrôles utilisateur (!) Et draggable (!) À une collection Observable <>. Cette mesure lorsque l'utilisateur fait glisser ou redimensionne le contrôle, la source de données est automatiquement mise à jour.Liaison de la position et de la taille d'un UserControl dans un canevas dans WPF
Comment pourrions-nous y parvenir si le contrôle Usercontrol est contenu dans un DataTemplate qui est à son tour utilisé par un ListBox dont le DataContext est défini sur la collection à laquelle nous voulons nous lier? En d'autres termes, comment lier la position et la taille d'un contrôle qui n'existe pas en XAML, mais uniquement en code (parce qu'il est créé en cliquant et en faisant glisser la souris)?
Notez que la collection peut être vide ou non vide, ce qui signifie que la taille et la position stockées dans la source de données doivent être correctement liées pour que UserControl puisse être dimensionné et positionné correctement dans Canvas via DataBinding. Est-ce possible?
Merci pour votre aide. Ceci est intéressant. Quelle est la propriété TopProperty ou LeftProperty dans la liaison dans votre exemple? Est-ce que Canvas.Left et Canvas.Top ou UserControl.Left et USerControl.Top? Je n'ai pas encore réussi à faire ce travail, et encore moins la liaison TwoWay. – John
Après un peu plus d'essais et d'erreurs cela fonctionne réellement. TwoWay prendra soin de la source de données lorsque la mosue déplace ou redimensionne le UserControl. Merci!! – John
TopProperty et LeftProperty sont les propriétés de votre source de données que vous souhaitez conserver en synchronisation. Heureux de l'entendre travaillé! – CMerat