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