【问题标题】:WPF DataGrid with cell style -- different cell style in same column具有单元格样式的 WPF DataGrid - 同一列中的不同单元格样式
【发布时间】:2011-05-12 04:52:12
【问题描述】:

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

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

谢谢, N头像

【问题讨论】:

    标签: c# wpf styles wpfdatagrid


    【解决方案1】:

    你可以:

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

      protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)

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

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

    【讨论】:

    • 谢谢阿兰,我正在尝试这个理论。会更新你
    • 嘿阿兰,我试过了,它正在工作。在绑定中遇到一些问题,但这不是一项艰巨的任务。感谢您的帮助。
    【解决方案2】:

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

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

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

    祝你好运,

    【讨论】:

    • 我正在尝试上传图片,但没有成功。让我编辑我的问题,使其更具体。
    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2017-01-28
    相关资源
    最近更新 更多