Хм, да, просто рисовать предметы внутри холста? :)
<Canvas>
<TextBlock Text="I'm Child #1" />
<TextBlock Text="I'm Child #2" Canvas.Top="50" />
</Canvas>
Или вы всегда можете сделать это за кодом
myCanvas.Children.Add(myTextBlock);
foreach(var someControl in SomeControlList)
myCanvas.Children.Add(someControl);
Редактировать
Я вижу ваше обновление и понятия не имею, о чем вы спрашиваете. Если вы хотите перетаскивать элементы на холст, лучше добавить / удалить элементы из ItemsSource
, чем вручную добавлять / удалять элементы из холста. Простое добавление / удаление их из myCanvas
не приведет к обновлению коллекции в вашем ItemsSource
Я бы порекомендовал взглянуть на статью Беа Столльниц о перетаскивании объектов с привязкой к данным . Это означает, что вы сохранили бы ItemsControl
, который у вас есть сейчас, но когда вы опускаете элемент поверх Canvas
, он добавляет DataItem за этим объектом к ObservableCollection<MyDataItem>
, который вы называете userControls
(мне не нравится это имя, потому что оно предполагает, что элементы данных содержат элементы пользовательского интерфейса, что не должно иметь место)