如何可视化地表示对象?
我想知道如何在WPF中直观地表示一个对象?例如,我有一个类,其形状为一个字段/属性,当我将其添加到面板时,我想将其表示为对象,例如画布。我知道我可以继承Shape并覆盖定义的几何属性,但我想知道是否还有其他方法?如何可视化地表示对象?
有多种方式做到这一点...
如果你的元素不会呈现任何东西,只是在视觉树坐(对于一些peculier原因),然后主办它在视觉树您将不得不从
Visual
类继承它。当你继承时,不要忘记覆盖Visual
类的所有虚拟方法,以使你受益。如果需要在UI上渲染(我猜是你的要求),那么它必须继承
UIElement
类。在这里,您可以通过覆盖名为OnRender()
的UIElement
类的虚拟方法来渲染它。该方法接收一个参数DrawingContext
,可以根据需要绘制形状。Adorner
通常这样工作。如果您需要
Style
,DataContext
和Tag
等属性,您可能需要继承FrameworkElement
。如果你想让你的视觉对象包含另一个
Visual
对象,那么它可以继承FrameworkContentElement
。
你可以使用一个DataTemplate
代表数据对象:
<DataTemplate DataType="{x:Type local:yourObject}">
... your visuals
</DataTemplate>
我明白了。我认为'DataTemplate'的唯一缺点是很难在代码中创建,而不是在XAML中创建。 – mihajlv 2011-12-28 19:11:14
谢谢,很好的解释。 onRender是我一直在寻找的。 'DataTemplate'虽然有相同的效果吗? – mihajlv 2011-12-28 19:08:35