2010-11-18 152 views
0

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

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

DataGrid Cell Style

感谢, ñ化身

alt text

回答

1

,你可以:

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

    保护覆盖FrameworkElement的GenerateElement(DataGridCell细胞,对象的DataItem)

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

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

谢谢阿兰,我正在为这个理论做准备。将更新你 – 2010-11-19 17:11:37

+0

嘿阿兰,我试过了,它正在工作。在绑定中遇到一些问题,但这不是一项艰巨的任务。谢谢你的帮助。 – 2011-01-18 15:49:46

0

当问这个问题时,请记住,有两种不同类型的WPF DataGrid中的。在使用.NET Framework 3.5 SP1的WPFToolkit中的CodePlex上发布的一个。而较新的WPF DataGrid作为使用.NET Framework 4.0的WP4中的内置控件发布。

根据您决定使用哪个数据网格,您的解决方案可能会有所不同,并且您可能会发现其中一个比另一个更好。

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

祝你好运,

+0

我想上传图片我的意思,但不成功。让我编辑我的问题,以更具体。 – 2010-11-18 19:23:30