2009-10-31 254 views
1

我目前正在使用WPF創建一個用戶界面,並希望在我的窗口上顯示一個餅圖。據我所見,這將涉及到創建一個自定義控件 - 這不是一種將樣式或模板應用於現有控件就足夠了的情況。我讀過幾篇關於自定義控件的文章,所有提供詳細描述的文章似乎都使用了非常不同的方法。創建一個WPF自定義控件

不同的作者從其他控件,用戶控件或畫布派生自定義控件類。渲染在幾個地方完成,包括在OnRender和OnApplyTemplate中,使用幾種不同的方法之一:DrawingVisual,GeometryDrawing或Shape。簡單地在屏幕上放置幾個形狀似乎有很多不同的方式,我現在很困惑。

我期望實現的所有功能都是一個簡單的餅圖,當點擊餅圖的一個楔形時,會暴露出一個事件。

是否有一個普遍認同的「最好」的方式去做到這一點?

回答

2

WPF Toolkit包括一個圖表控件。既然源代碼也可用,也許你可以看看它的啓發。我沒有太多調查,但也許你所尋求的已經實施。

至於WPF中的自定義控件一般情況下,我建議您獲得WPF Control Development Unleashed的副本。我大約過了一半,我必須說它非常好。它解釋了關於創建自己的控件的所有內容,以及如何選擇應從中派生出的類。作者還解釋了什麼時候不是來創建自己的控件,並且很好地將最常見的WPF控件(如Slider或ListBox)轉換爲與原始視圖無關的漂亮視覺控件。例如,他拿着一個ListBox並將它變成一個雷達屏幕,顯示正確定位的船隻和潛艇,即使是清掃的錐體也沒有被省略。我懷疑你正在努力完成的事情可以用同樣的方法完成。

+0

事實上,該工具包包含一個Chart,其中包含一個餅圖實現,如果它不太合適,您可以肯定地重新考慮您的需求。但是,如果這是您的擔憂,則只會在預覽版中顯示圖表。 Yup; – Egor 2009-11-01 08:53:19

+0

幾乎總是可以將控件重新設置爲一個不同的模板 - 但它總是最好的方法嗎?如果你想用船隻進行掃雷雷達控制,似乎使用ListBox風格比創建自定義控件更麻煩。 – 2010-06-10 10:18:36

1

在codeplex上籤出wpf工具包。他們在路線圖上有圖表控制。