У меня есть большая проблема относительно вывода в 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: свойство 'x = 8' не найдено в 'объекте' '' DataRowView '(HashCode = 25662852)'. BindingExpression: Path = x = 8,0000; DataItem = 'DataRowView' (HashCode = 25662852); целевым элементом является TextBlock (Name = ''); Целевое свойство - «Текст» (тип «Строка»)
То же сообщение для каждого отдельного столбца только с другим x. Используя версию .test и снова немецкий язык (так что запятая вместо точки в качестве десятичного разделителя) я получаю:
Ошибка System.Windows.Data: 40: Ошибка пути BindingExpression: свойство 'x = 8,0000' не найдено в 'объекте' '' DataRowView '(HashCode = 25662852)'. BindingExpression: Path = x = 8,0000.test; DataItem = 'DataRowView' (HashCode = 25662852); целевым элементом является TextBlock (Name = ''); Целевым свойством является «Текст» (тип «Строка»)
Кто-нибудь видит решение этой проблемы?
С уважением,
Фил