Отображение нескольких элементов FrameworkElement в WPF

1

У меня есть пользовательский 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.

  • 0
    как насчет Canvas ?
Теги:
wpf
contentpresenter

1 ответ

0
Лучший ответ

Проблема заключалась в том, что ContentControl внутри ItemsControl по умолчанию устанавливал параметры размера 0, поэтому, в основном, мои FrameworkElements были только нулевыми. Я должен был указать Widht и Height вручную, чтобы сделать его видимым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню