在输出一些计算值的工具中,DataGrid中的输出存在很大问题。 作为程序的一部分,我有一个DataGrid:
<DataGrid AutoGenerateColumns="True" EnableRowVirtualization="True" EnableColumnVirtualization="True" Margin="6,14,6,6" Name="valueGrid" ItemsSource="{Binding}" MaxColumnWidth="70" MinColumnWidth="70" ColumnHeaderHeight="23" IsReadOnly="True" CanUserSortColumns="False" CanUserReorderColumns="False" />
然后我向其添加动态列
public partial class MainWindow : Window
{
private DataView _dv;
private void BuildGrid(int columns, int rows, double[,] values, double x, double deltax)
{
DataTable dt = new DataTable();
int i, j;
string pos;
DataColumn cl = null;
for (i = 0; i < columns; i++)
{
pos = string.Format("{0:0.0000}", x + i * deltax);
cl = new DataColumn("x = " + pos);
dt.Columns.Add(cl);
}
_dv = new DataView(dt);
valueGrid.ItemsSource = _dv;
for (i = 0; i < rows; i++)
{
DataRowView rw = _dv.AddNew();
j = 0;
foreach (DataColumn col in _dv.Table.Columns)
{
rw[col.ColumnName] = string.Format("{0:0.000000}", values[i, j]);
j++;
}
}
}
}
现在我正在运行一个德语操作系统(所以十进制分隔符是一个逗号),但在英国学习,所以我想将我的CultureInfo更改为英文,这将用点替换逗号,一切正常但似乎似乎是关于列名称中的点的问题,并且更改后DataGrid的所有单元格都保持为空。我还尝试将字符串“.test”添加到每个列名的末尾,而不是更改语言,并且出现了同样的问题。 我收到以下错误消息:
System.Windows.Data错误:40:BindingExpression路径错误:在'object'''DataRowView'(HashCode = 25662852)'上找不到'x = 8'属性。 BindingExpression:Path = x = 8.0000; DataItem ='DataRowView'(HashCode = 25662852); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')
每个列只有不同的x的相同消息。使用.test版本和德语(所以逗号而不是点作为小数分隔符)我得到:
System.Windows.Data错误:40:BindingExpression路径错误:在'object'''DataRowView'(HashCode = 25662852)'上找不到'x = 8,0000'属性。 BindingExpression:Path = x = 8,0000.test; DataItem ='DataRowView'(HashCode = 25662852); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')
有没有人看到这个问题的解决方案?
此致 菲尔