Хотя я не уверен, что это правильный подход для приложения для рисования (Замечено, что jlew's Anwser ?), Я просто отвечу на ваш вопрос и надеюсь, что вы найдете свое решение.
ItemsControl
- это базовый элемент управления, который может сделать это:
<ItemsControl>
<ItemsControl.Items>
<Line Name="ctlLine" />
<Rectangle Name="rec1" />
<Rectangle Name="rec2" />
</ItemsControl.Items>
</ItemsControl>
Это должно работать ... так что вы можете получить из ItemsControl
:
public class SomeAbstractGroupingContainer : ItemsControl
{
public SomeAbstractGroupingContainer()
{
this.DefaultStyleKey = typeof(SomeAbstractGroupingContainer);
}
}
И вы можете расширить его, как пожелаете.
Итак, в конце концов вы получите что-то вроде этого:
<myControls:SomeAbstractGroupingContainer>
<myControls:SomeAbstractGroupingContainer.Items>
<Line Name="ctlLine" />
<Rectangle Name="rec1" />
<Rectangle Name="rec2" />
</myControls:SomeAbstractGroupingContainer.Items>
</myControls:SomeAbstractGroupingContainer>
Вы можете изменить способ расположения элементов, изменив ControlTemplate
.
Это было вдохновлено ItemsControl с нуля до вашей собственной статьи , это может быть полезно.