У меня есть пользовательский FrameworkElement (отображает 3D-модель и позволяет управлять камерой), и мне нужно одновременно отображать несколько элементов этого типа (они должны перекрываться). Элементы хранятся в списке. На данный момент я могу добиться этого, просто разместив несколько ContentControls в Grid и используя мой FrameworkElements как Content. И это работает хорошо. Но любая попытка добиться этого результата для пользовательского количества элементов не удалась. Я пытался использовать ItemsControl, но он просто не работает. Есть ли удобный способ отображать несколько элементов из исходного списка, помещая их в одну позицию?
Обновить
Canvas и ItemsControl просто не работают для меня. Даже если я просто перемещаю один элемент. Это значит,
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
хорошо работает, но
<ItemsControl>
<ContentControl Content="{Binding DrawableElements[0]}"></ContentControl>
</ItemsControl>
не работает вообще, хотя, это довольно простой подход. То же самое касается Canvas. Я не знаю, если я использую его правильно, но я просто не могу понять, почему простой элемент ItemsControl с отдельным элементом не хочет отображаться.
Обновление # 2
Если у меня есть класс, обладающий определенными свойствами, с FrameworkElement среди них, мой ItemsControl, который использует список экземпляров этого класса, будет отлично работать с любыми свойствами EXCEPT FrameworkElement. Теперь я действительно не могу понять, что происходит.
Примечание. Я пытаюсь следовать шаблону MVVM, поэтому не должно быть прямого влияния на пользовательский интерфейс из кода. Вот почему я выбрал ContentControl на первом месте. В противном случае я могу просто добавить новые элементы FrameworkElements в качестве дочерних элементов в простое Grid.
Проблема заключалась в том, что ContentControl внутри ItemsControl по умолчанию устанавливал параметры размера 0, поэтому, в основном, мои FrameworkElements были только нулевыми. Я должен был указать Widht и Height вручную, чтобы сделать его видимым.
Canvas
?