2014-10-17 70 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/)。我们将非常乐意为您提供帮助。