【发布时间】:2011-05-12 04:52:12
【问题描述】:
我只是想知道如何为同一列分配不同的单元格样式?单元格样式可能是组合框或文本框。 图片上传。真的很难吗?
我想在数据网格中显示一个表格。第一列应该是表字段的名称,第二列应该是列的值。 现在如果第一列单元格的数据类型是 var char ,那么第二列单元格应该显示文本框。 如果第一列单元格数据类型为 int,则第二列单元格应显示组合框。
谢谢, N头像
【问题讨论】:
标签: c# wpf styles wpfdatagrid
我只是想知道如何为同一列分配不同的单元格样式?单元格样式可能是组合框或文本框。 图片上传。真的很难吗?
我想在数据网格中显示一个表格。第一列应该是表字段的名称,第二列应该是列的值。 现在如果第一列单元格的数据类型是 var char ,那么第二列单元格应该显示文本框。 如果第一列单元格数据类型为 int,则第二列单元格应显示组合框。
谢谢, N头像
【问题讨论】:
标签: c# wpf styles wpfdatagrid
你可以:
从 DataGridBoundColumn(或其派生项之一)派生并覆盖
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
方法。此方法创建出现在每个单元格中的项目。作为参数传递的 dataItem 是行中的项目。麻烦的是,要决定使用什么项目来显示当前单元格值,您必须执行 binding manually 以使项目显示在单元格中,然后查看要返回的 ui 控件。
【讨论】:
当问这个问题时,请记住有两种不同类型的 WPF 数据网格。在使用 .NET Framework 3.5 SP1 的 WPFToolkit 中的 CodePlex 上发布的版本。较新的 WPF DataGrid 作为 WP4 中的内置控件发布,它使用 .NET Framework 4.0。
您的解决方案可能会有所不同,具体取决于您决定使用的数据网格,并且您可能会发现其中一个比另一个工作得更好。
话虽如此,我在C# Corner 上找到了一篇文章,该文章描述了当单元格处于编辑模式时如何在单元格中显示组合框。这可能会对您有所帮助。如果您从这里开始,您可能会发现您可以扩展此代码示例以满足您的需求。在编辑时需要使用文本框而不是组合框的情况下,您可以将组合框设置为允许输入新值,本质上是让用户在他们想要的项目不可用时在文本框中输入值。不确定这是否是你想要的,但我至少想给你一些东西来咀嚼。
祝你好运,
【讨论】: