我使用椭圆和其他形状作为屏幕标记,我希望其他人能够使用模板更改这些视觉效果。但是,由于形状不支持模板,我不得不创建一个基本的UserControl,它默认显示一个椭圆,然后使用它代替基本形状。一个轻量级的可模板WPF形状
有没有人有一个整洁的解决方案?我有点担心,如果我在屏幕上创建1000个这样的性能/内存会有一点开销。
我使用椭圆和其他形状作为屏幕标记,我希望其他人能够使用模板更改这些视觉效果。但是,由于形状不支持模板,我不得不创建一个基本的UserControl,它默认显示一个椭圆,然后使用它代替基本形状。一个轻量级的可模板WPF形状
有没有人有一个整洁的解决方案?我有点担心,如果我在屏幕上创建1000个这样的性能/内存会有一点开销。
UserControl
派生自ContentControl
。它不听起来好像你需要的内容(托管您的形状内的其他控件的能力),所以我会继续上涨的层次......
这里是祖先的细分:
UserControl
ContentControl
Control
FrameworkElement
UIElement
Visual
...
Control
定义Template
属性,所以我想实现的最轻的方式,你想要的是使用Control
:
<Control Style="{StaticResource MyStyle}"/>
...并使用Style
设置您需要的模板,任何触发器的/ etc 。
然而,如果你确实需要承载您的形状内部的子元素,你应该使用ContentControl
这样的:
<ContentControl Style="{StaticResource MyStyle}"/>
如果发现这种方式过于重量级的在运行,那么你可以考虑使用Shape。
Shape
FrameworkElement
UIElement
Visual
...
Shape
不会Control
从FrameworkElement
继承,而是直接。它不可模版化。这是一个抽象类,您需要创建自己的定制子类,以了解如何通过DefiningGeometry
属性描述其自己的演示文稿。这可能比定义Control
上的样式更复杂,但如果您需要额外的性能,那么您可能必须走这条路线。
编辑您可能也想看看DrawingVisual以及。来自MSDN:
DrawingVisual是一个轻量级绘图类,用于呈现形状,图像或文本。这个类被认为是轻量级的,因为它不提供布局或事件处理,从而提高了它的性能。
它也不是可模板化的,但如果您需要原始性能,那么值得一看。
您是否得到了这个工作?你可以提供你的结果的任何细节? – 2009-02-24 14:01:13