具有单元格样式的WPF DataGrid - 同一列中的不同单元格样式

时间:2010-11-18 17:53:56

标签: c# wpf styles wpfdatagrid

我只是想知道如何为同一列分配不同的单元格样式?单元格样式可能是组合框或文本框。 图片已上传。这真的很难吗?

我想在数据网格中显示一个表格。第一列应该是表字段的名称,第二列应该是列的值。 现在,如果第一列单元格数据类型是var char,则第二列单元格应显示文本框。 如果第一列单元格数据类型为int,则第二列单元格应显示组合框。

DataGrid Cell Style

谢谢, N头像

alt text

2 个答案:

答案 0 :(得分:1)

你可以:

  • 从DataGridBoundColumn(或其衍生产品之一)派生并覆盖

    protected override FrameworkElement GenerateElement(DataGridCell cell,object dataItem)

方法。此方法创建出现在每个单元格中的项目。作为参数传递的dataItem是行中的项。麻烦的是,要确定用于显示当前单元格值的项目,您必须执行binding manually以使项目显示在单元格中,然后查看要返回的ui控件。

  • 使用模板列,并在单元格模板中使用数据触发器来交换您希望显示的ui元素。

答案 1 :(得分:0)

在提出这个问题时,请记住有两种不同的WPF数据网格。在WPFToolkit中使用.NET Framework 3.5 SP1在CodePlex上发布的版本。较新的WPF DataGrid在WP4中作为内置控件发布,它使用.NET Framework 4.0。

您的解决方案可能会有所不同,具体取决于您决定使用哪个数据网格,并且您可能会发现其中一个可以比另一个更好地工作。

话虽如此,我在C# Corner上发现了一篇文章,描述了当单元格处于编辑模式时如何在单元格中显示组合框。这可能对你有所帮助。如果从这里开始,您可能会发现可以扩展此代码示例以满足您的需求。在编辑时需要使用文本框而不是组合框的情况下,您可以设置组合框以允许键入新值,实际上当用户想要的项目不可用时,用户可以在文本框中键入值。不确定这是不是你想要的,但我至少想给你一些东西来咀嚼。

祝你好运,