UserControl
происходит от ContentControl
. Звучит не так, как будто вам нужен контент (возможность размещать дополнительные элементы управления внутри вашей фигуры), поэтому я буду продолжать повышать иерархию ...
Вот разбивка по наследству:
UserControl
ContentControl
Control
FrameworkElement
UIElement
Visual
...
Control
определяет свойство Template
, поэтому я думаю, что самое легкое средство для достижения того, чего вы хотите - это использовать Control
:
<Control Style="{StaticResource MyStyle}"/>
... и используйте Style
, чтобы установить шаблон и любые триггеры / и т.д., которые вам нужны.
Если, однако, вам нужно разместить дочерний элемент внутри вашей фигуры, вы должны использовать ContentControl
таким образом:
<ContentControl Style="{StaticResource MyStyle}"/>
Если вы обнаружите, что этот подход слишком тяжелый во время выполнения, вы можете рассмотреть возможность использования Shape .
Shape
FrameworkElement
UIElement
Visual
...
Shape
не наследуется от Control
, а напрямую от FrameworkElement
. Это не шаблонно. Это абстрактный класс, из которого вам нужно создать свой собственный подкласс, который знает, как описать свою собственную презентацию через свойство DefiningGeometry
. Это может быть более сложным, чем определение стиля для Control
, но если вам нужна дополнительная производительность, вам, возможно, придется пойти по этому пути.
РЕДАКТИРОВАТЬ Вы также можете проверить DrawingVisual . Из MSDN:
DrawingVisual - это легкий класс рисования, который используется для визуализации фигур, изображений или текста. Этот класс считается легковесным, поскольку он не обеспечивает компоновку или обработку событий, что повышает его производительность.
Это также не шаблонно, но если вам нужна грубая производительность, то стоит посмотреть.