2011-12-28 42 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