You need to enable JavaScript to run this app. WPF DataGrid绑定Int64列表显示空行但ComboBox正常,如何排查解决?
优惠活动
大模型
产品
解决方案
定价
更多

WPF DataGrid绑定Int64列表显示空行但ComboBox正常,如何排查解决?

问题根因

该问题由DataGrid和ComboBox的默认绑定逻辑差异导致:

  • ComboBox默认会直接调用集合元素的ToString()方法展示内容,所以直接绑定List<Int64>可以正常显示数值。
  • 开启AutoGenerateColumns="True"的DataGrid会自动遍历集合元素的公共属性生成列,而Int64是值类型,没有可供绑定的公共可读属性,所以生成的列没有绑定源,最终表现为行数匹配但内容全空。

解决方案

方案1:手动定义DataGrid列(最简便)

不需要修改后台代码,仅调整XAML中DataGrid的配置,显式指定列绑定到当前行的元素本身(用Path=.表示)即可:

<DataGrid  AutoGenerateColumns="False"  x:Name="SapGrid"   Margin="10,10,10,10" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="Sap单据号" Binding="{Binding Path=.}" />
    </DataGrid.Columns>
</DataGrid>

注意需要把AutoGenerateColumns属性改为False,避免自动生成多余的空列。

方案2:包装基础类型为自定义类

如果后续需要给每行扩展其他属性(如勾选状态、关联备注等),可以把Int64包装为自定义类:

public class SapDocNumberItem
{
    public long Number { get; set; }
}

之后将Document类里的SapDocNumbers属性类型改为List<SapDocNumberItem>,赋值时把数值存入Number属性,原来的DataGrid自动生成列逻辑就可以正常读取到Number属性并展示内容。

内容的提问来源于stack exchange,提问作者Praxiom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 23:45:04