2014-10-17 44 views
0

對所有WPF天才的問候。WPF DataGrid和其他DataGrid組件

我是一位專業的Java開發人員,也是.NET &相關技術的新成員。所以如果我問任何愚蠢的問題,請和我一起裸照。 :)

我&我的團隊得到了一個新的項目,用WPF開發(使用普通的WPF和/或第三方庫),其中DataGrid組件需要具備以下功能。在45度角

  1. 標題行的文本(或任何其他角度用戶希望)
  2. 摘要行(多個)
  3. 摘要列(多個)
  4. 不同的背景顏色爲一些列(S) /列
  5. 樞軸支持
  6. 能夠爲行/列指定右鍵單擊事件的新命令(例如,我們需要一些命令,如「創建」,「刪除」,「導出」,「隱藏」 ,「禁用」等)
  7. 通過右鍵點擊和對電網
  8. 選擇「創建」一個新的數據行/列通過右鍵點擊和手動
  9. 重新排序列/行的網格/列中選擇「刪除」刪除行/列&按字母順序排列
  10. 複製(使用值複製整個行或列)。 (例如,複製「產品名稱」一欄應產生「產品名稱(副本)」,「產品名稱(副本2)」等)
  11. 禁用列/行(顯示在應用程序中,但不是用於報告和/或其他功能)
  12. 如果一個單元格有備忘錄,則存在紅色的角落(如在excel中註釋)
  13. 對於顯示給用戶的列標題應該有最大長度。 (如果列名太長,它將在某個點被截斷並且整個名稱可能通過懸停在標題上在工具提示中看到)
  14. 單元格的多選和複製它們的內容
  15. 突出顯示(例如,在搜索表單中,我們通過一些參數搜索特定的行,並且如果發現該行應該在網格中突出顯示)
  16. 要只有幾列的標題(例如。out 5列,只有2列應該有標題)

我試過WPF的DataGrid組件&我設法實現了fol降脂。

  1. 標題行的在45度角的文本(或任何其他角度用戶希望)
  2. 不同的背景顏色爲一些行(多個)/列(多個)
  3. 摘要列(多個)

然後我嘗試了DevExpress的DataGrid組件&我設法實現了以下功能。

  1. 摘要行(S)

現在我有幾個問題。

  1. 所有這些功能都可以從普通的WPF中實現嗎?
  2. 我是否需要不同框架/第三方庫(例如DevExpress)的支持?
  3. 在性能(速度)和內存消耗方面使用普通WPF組件的優點是什麼?
  4. 是否還有更多的第三方庫提供這些功能?
  5. 最重要的是,對於WPF專家來說,比如說,如果我們要從頭開始使用普通的WPF,那麼構建這樣一個組件需要多長時間?

預計您的迴應。 非常感謝。

此致敬禮, Asela。

+0

而不是問*許多問題*,嘗試實現某些目標,如果失敗 - 在這裏提出一個*單個問題,發佈你做了什麼,想要什麼,爲什麼它不起作用等。不要忘記先使用搜索;) – Sinatr 2014-10-17 11:31:41

回答

0

首先,我想提一提,我爲DevExpress工作,所以對於我給你什麼組件設置使用的建議會有點不公平。相反,我會描述我們爲您的場景提供什麼,並讓您比較一下自己。

下面你可以找到我的關於如何實現在DevExpress的GridControl您的要求的意見:

  1. 您可以爲您的列標題含量少的模板,並有旋轉文本。
  2. GridControl支持兩種主要類型的摘要 - 分別爲每個組計算組摘要和爲所有可見網格行計算的總摘要。您可以按列對齊摘要,也可以讓它們佔據所有可用空間。小組摘要既可以在小組行中顯示,也可以在組下面的小組頁腳中顯示。最終用戶可以通過內置對話框在運行時添加/修改/刪除彙總。查閱我們文檔中的Data Summaries Overview文章以瞭解更多信息。
  3. GridControl爲calculated (unbound) columns提供支持。要爲計算列提供數據,請使用表達式(最終用戶有一個內置表達式對話框)或計算代碼中的列值。
  4. 修改某些列/行的背景色並實現其他格式的最佳方法是使用我們的Excel-style Conditional Formatting feature。條件格式化規則既可以在xaml中定義,也可以在運行時由最終用戶配置。
  5. 有一個單獨的PivotGridControl component用於處理OLAP數據源和輕鬆整合圖表。
  6. 有一組用於常見網格操作(添加,刪除,顯示打印對話框等)的內置命令。當然,如果你願意,你也可以實現自定義命令。
  7. 有一個特殊的New Item Row功能用於就地行創建。如果您不想直接在網格中初始化行值,您可以將相應的菜單項添加到網格行的上下文菜單中,並在其中調用內置的「刪除行」命令。下面是在我們的數據庫中的相應的示例:

How to delete grid rows via the DeleteFocusedRow grid command

  • GridControl支持各種排序模式,內置和定製,訂購行。您還可以使用內置的拖放管理器對行進行重新排序(請參閱Drag and Drop overview主題)。也可以使用拖放操作對列進行重新排序(默認情況下啓用此功能)。
  • 您可以手動實現此「複製行」和「複製列」功能,例如,將相應的項目添加到列和行的內置網格上下文菜單中。
  • 您可以手動實現此功能並添加相應的菜單項。
  • DevExpress附帶有一個特殊的MemoEdit編輯器。如果您不想使用此編輯器,請創建一個帶有紅色拐角元素的單元格模板,並將其綁定到單元格的評論。
  • 使用MaxWidth屬性來限制網格列的寬度。該列的行爲與您所描述的完全相同。
  • 完全支持單元多選以及複製/粘貼到Excel或其他程序。
  • GridControl有一個內置的search form,當你按下Ctrl + F時會出現。當您使用此表單在網格中搜索時,網格突出顯示找到的文本。如果需要,也可以使用單獨的搜索表單或將搜索文本綁定到網格。
  • 最有可能的是,這可以實現,但我現在不能給出任何建議,因爲我不清楚應該在標題面板中顯示沒有標題的列的內容。應該只有空白空間嗎?
  • 最後,我想解決您關於性能的問題。影響網格性能的主要因素有兩個:渲染性能和數據操作的性能。雖然很難將GridControl數據操作性能與標準WPF DataGrid進行比較,但因爲DataGrid不支持許多數據操作,所以您可以使用我們的特殊源之一來處理服務器端的數據(即將數據查詢直接傳播到數據庫或WCF服務器)。在這種情況下,大數據源的數據操作性能將顯着增加。網格還有一個選項可以處理多個線程中的數據,以便UI永不凍結。

    至於渲染性能,我可以與你分享一些數字。我們在最新版本(14.1)中進行了顯着的性能優化,並對DataGrid進行了一些測試。下面是我們發現了(所有測試都是全屏電網標準的全高清顯示器上進行):

     
    Tree creation (hot start) 
    Tree Creation 14.1 optimized mode MS DataGrid 
    Text сolumns  266    375 
    Check columns  296    610 
    DateTime columns 312     - 
    ComboBox columns 297    765 
    
    Vertical Scrolling: 
    Vertical Scrolling  DevExpress GridCont MS DataGrid 
    (1000 Rows 16 columns) 
    Text сolumns       1484  2109 
    Check columns       1359  1390 
    DateTime columns      2062   - 
    ComboBox columns      1391  5532 
    

    我們不能在這裏測量水平滾動,因爲標準DataGrid沒有水平滾動虛擬化。

    當然,這些數字只能說明一個特定情況,我們仍然認爲比較產品的最佳方式是在必要情況下手動嘗試它們。如果您在評估我們的控件時需要任何幫助,歡迎您在我們的支持中心發佈任何問題(https://www.devexpress.com/Support/Center/)。我們將非常樂意爲您提供幫助。