Я хотел бы создать пользовательский компонент, который размещает свои дочерние элементы либо в StackPanel
, либо в Grid
(с переменным числом строк, что заставляет меня рассмотреть вместо StackPanel
).Элементы - это пользовательские элементы / объекты, которые просто содержат некоторую конфигурацию, на основе которой создается несколько элементов управления для их отображения (некоторые надписи и текстовые поля).
В идеале компонент должен использоваться как-то так (гдеSpecializedCustomPanelItem
- это подтип CustomPanelItem
):
<CustomPanel>
<CustomPanelItem Param1="value A" Param2="value B">Text</CustomPanelItem>
<CustomPanelItem Param1="value C">Other text</CustomPanelItem>
<SpecializedCustomPanelItem>More text</SpecializedCustomPanelItem>
<!-- The number of items is variable -->
</CustomPanel>
Я читал на ItemsControl
уже некоторое время, и он вполне соответствует моим потребностям.Я бы просто создавал типы для элементов и делал шаблоны данных для них доступными внутри ItemsControl
.Тогда они уже должны хорошо отрисоваться.
Однако я бы хотел, чтобы элементы внутри этого ItemsControl
были определенного типа (т.е. CustomPanelItem
или подтип).Я на самом деле думал, что ItemsControl
позволит это, так же как и вы внутри ComboBox
или MenuItem
, но получается, что он на самом деле допускает любой подтип и, если необходимо, оборачивает их в контейнер для предметов.
Так что я подумал, действительно ли ItemsControl
- это то, что я ищу, так как я не хочу никаких «причудливых» вещей, таких как выделение или прокрутка, которые реализует большинство этих элементов управления.Я на самом деле хочу только создать простой интерфейс с общим шаблоном в приложении, которое автоматически генерирует эти компоненты и размещает их в Grid
/ StackPanel
.
Должен ли я по-прежнему использовать ItemsControl
илиСкорее построить еще один пользовательский компонент?