2009-04-19 46 views
1

我需要編寫一個WPF類似excel的網格控件。我是WPF的新手,無法完成從哪裏開始。編寫WPF網格

它應該來自UserControl,FrameworkElement還是其他?

我需要它有水平和垂直滾動條和一個內容區域。這是否意味着我的網格控件應該帶有滾動條的DockPanel,然後是內容區域的另一個控件,以便我的GridUserControl具有帶有2個停靠滾動條和一個GridContentFrameworkElement控件的DockPanel?

購買電網不是一種選擇。


這就是我決定的:我有一個GridUserControl(派生自UserControl)。它有一個DockPanel和2個停靠的ScrollBar對象。主要內容區域(GridContent)是從面板派生的另一個控件。內容在GridContent.OnRender中繪製。

我沒有去與ScrollViewer,因爲它想呈現整個內容區域,然後滾動。我只想繪製當前可見的內容區域,因爲網格中可能有數百萬行。

回答

0

它應該可能來自UserControl或ItemsControl(或ItemsControl層次結構中的其他東西,例如Selector)。如果您對WPF不熟悉,最好從UserControl派生出來,因爲創建一個很好的自定義控件需要WPF開發的習慣用法以及API的合理流暢性。

與其試圖通過創建顯式ScrollBar元素手動管理滾動區域,請考慮使用ScrollViewer類。如果您將網格內容存放在ScrollViewer中,並且對於可用顯示區域來說太大,ScrollViewer將負責顯示滾動條並自動滾動內容。

請注意,如果您正在尋找數據網格類型功能,那麼可以使用各種免費,商業和開放源代碼的WPF數據網格,儘管這些數據網格傾向於偏向表格數據編輯而不是像Excel那樣功能。

2

你確定你必須寫一個嗎?那裏有很多good grids; even free ones。我知道它沒有響應,但只是試圖幫助。

+1

DataGrid並不是像網格那樣的「Excel」的最佳實現,主要是因爲他們希望列「意味着」除了作爲列之外的其他東西。 – user7116 2009-04-20 20:03:37

1

免費

首先,WPF附帶一個GridView控制這是一個簡單的網格。如果它不能滿足你的需求,你可以擴展它,這樣你就可以繼承一些現有的功能。

還可以免費

大多數人覺得這是對他們的要求太簡單了,所以來看看微軟的免費WPFToolkit包含一個DataGrid控件,這可能滿足您的需求。這是一個overview

源代碼可用爲此,如果您絕對必須自己實現整個控制並希望看到一種編寫網格控件的方法,這可能很有啓發。

祝你好運!