2010-02-03 6 views
2

Dans une application WPF, j'ai une collection ObservableCollection d'objets (zones sur une image) que je veux afficher et modifier (taille et position) lors de l'exécution.Databind InkCanvas Children

Je voudrais utiliser un InkCanvas en mode Select avec des Rectangles représentant mes objets, mais il ne semble pas prendre directement en charge la liaison de données.

Est-il possible de lier d'une façon ou d'une autre la collection Children d'un InkCanvas à une ObservableCollection?

+1

J'ai essayé de faire quelque chose de similaire mais je n'ai rien trouvé d'évident. J'ai terminé en utilisant une propriété de dépendance attachée pour synchroniser manuellement la collection Children et la collection ObservableCollection à laquelle je voulais me lier. J'adorerais entendre de meilleures suggestions si –

+0

C'est ce que je suis en train de faire en ce moment. En plus de remplir manuellement les InkCanvas Children, je gère aussi SelectionMoved et SelectionResized et remet manuellement la valeur dans le modèle. Tout cela me semble être une évidence pour eux dans les versions futures. –

Répondre

1

Avez-vous essayé d'utiliser ItemsControl avec un ensemble de canevas comme ItemsControl.ItemsPanel? Vous pouvez ensuite lier la propriété ItemsSource à votre ObservableCollection. Vous pouvez ensuite utiliser ItemsControl.ItemsTemplate pour lier une propriété d'un élément aux propriétés Canvas.Left (Right) pour un placement absolu.

+0

Mais vous ne pourrez pas sélectionner ces enfants du InkCanvas avec EditingMode.Selection. Si c'est en lecture seule, c'est une solution adéquate, mais ce n'est pas une solution générale d'InkCanvas. –