Связывание позиции и размера UserControl внутри Canvas в WPF - PullRequest
0 голосов
/ 30 марта 2010

Нам нужно динамически создавать (т.е. во время выполнения, с помощью кода) элементы UserControls и размещать их на холсте. Мы хотим связать позицию (Canvas.Left и Canvas.Top) и ширину таких значимых (!) И перетаскиваемых (!) Пользовательских элементов управления с ObservableCollection <>. Если пользователь перетаскивает или изменяет размер элемента управления, источник данных автоматически обновляется.

Как бы мы этого достигли, если Usercontrol содержится в DataTemplate, который, в свою очередь, используется ListBox, для которого DataContext установлен на коллекцию, с которой мы хотим связать?

Другими словами, как связать позицию и размер элемента управления, который не существует в XAML, но только в коде (потому что он создается путем щелчка и перетаскивания мыши)?

Обратите внимание, что коллекция может быть пустой или не пустой, это означает, что размер и положение, хранимые в источнике данных, должны быть правильно привязаны, чтобы UserControl мог быть правильно измерен и расположен в Canvas - через DataBinding. Это возможно?

1 Ответ

0 голосов
/ 30 марта 2010

Вы пытались использовать Mode=TwoWay переплет?

<YourUserControl 
    Canvas.Top="{Binding TopProperty, Mode=TwoWay}" 
    Canvas.Left={Binding LeftProperty, Mode=TwoWay}" 
    Height="{Binding HeightProperty, Mode=TwoWay}" 
    Width="{Binding WidthProperty, Mode=TwoWay}" />

Я не уверен, что двусторонняя привязка будет работать с операциями изменения размера или перетаскивания, но есть только один способ выяснить.

...