2011-12-28 70 views
0

我想知道如何在WPF中直观地表示一个对象?例如,我有一个类,其形状为一个字段/属性,当我将其添加到面板时,我想将其表示为对象,例如画布。我知道我可以继承Shape并覆盖定义的几何属性,但我想知道是否还有其他方法?如何可视化地表示对象?

回答

1

有多种方式做到这一点...

  1. 如果你的元素不会呈现任何东西,只是在视觉树坐(对于一些peculier原因),然后主办它在视觉树您将不得不从Visual类继承它。当你继承时,不要忘记覆盖Visual类的所有虚拟方法,以使你受益。

  2. 如果需要在UI上渲染(我猜是你的要求),那么它必须继承UIElement类。在这里,您可以通过覆盖名为OnRender()UIElement类的虚拟方法来渲染它。该方法接收一个参数DrawingContext,可以根据需要绘制形状。 Adorner通常这样工作。

  3. 如果您需要StyleDataContextTag等属性,您可能需要继承FrameworkElement

  4. 如果你想让你的视觉对象包含另一个Visual对象,那么它可以继承FrameworkContentElement

+0

谢谢,很好的解释。 onRender是我一直在寻找的。 'DataTemplate'虽然有相同的效果吗? – mihajlv 2011-12-28 19:08:35

0

你可以使用一个DataTemplate代表数据对象:

<DataTemplate DataType="{x:Type local:yourObject}"> 
    ... your visuals 
</DataTemplate> 
+0

我明白了。我认为'DataTemplate'的唯一缺点是很难在代码中创建,而不是在XAML中创建。 – mihajlv 2011-12-28 19:11:14