我正在使用 WPF 工具包中的 DataGrid 对象。我将 DataGrid 对象绑定(bind)到 DataTable 实例的默认 View ,如以下代码中声明的:
WeatherGrid.ItemsSource = weatherDataTable.DefaultView;
weatherDataTable 有三列。第一列定义为包含字符串数据类型。其他两列定义为包含 double 据类型。当应用程序退出调用声明中所表达的绑定(bind)的函数时,DataGrid 对象显示第一列的数据,但不显示其他列的数据。当我在调试器的立即窗口中键入以下内容时:
((DataRowView)WeatherGrid.Items[0]).Row[1]
我得到一个数字,但这与显示的内容不符。为什么只有第一列可见,如何才能使所有数据可见?我将在下面保留 DataGrid 对象的 XAML 定义:
<toolkit:DataGrid Margin="12.726,77.71,12,0" Name="WeatherGrid" Height="500" Grid.Row="1" VerticalAlignment="Top" CanUserAddRows="False" CanUserDeleteRows="False" IsReadOnly="True" />
最佳答案
事实证明,对于我的第二和第三列,我一直使用不正当的列名称。我最终希望我的 DataTable 是动态的,因为它可以具有可变数量的列,并且我希望按日期唯一标识每一列。因此,我附加了两个字符串,一个带有名称,另一个带有由“/”分隔的数字。这似乎导致了 DataGrid 对象的一些绑定(bind)问题。
为了解决这个问题,我把唯一标识日期的字符串改成了一年中的某一天的数字。结果,我能够显示数据。
值得注意的是,在 ASP.NET 中绑定(bind)到 GridView 时,在 DataTable 列名称中使用斜杠时不会出现此类问题。
关于c# - 无法在将 DataView 实例作为项目源的 WPF 数据网格中显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897833/