【发布时间】:2017-07-14 08:59:03
【问题描述】:
编辑
我已尝试按照以下建议将 AutoGeneratColumns 属性设置为 false: How to remove extra column Datagrid.
但是,如果我这样做,我的所有列都会消失。
问题
我有一个数据表,其中包含程序生成的列和行。但是,我在生成的列的右侧得到了一个额外的列。我应该写什么让它消失?
xaml:
<DataGrid CanUserAddRows="False">
<DataGrid.ItemsSource>
<MultiBinding Converter="{StaticResource MatrixToDataViewConverter}">
<Binding Path="ColumnHeaders" ElementName="Results"/>
<Binding Path="RowHeaders" ElementName="Results"/>
<Binding Path="Values" ElementName="Results"/>
</MultiBinding>
</DataGrid.ItemsSource>
</DataGrid>
转换方法
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var myDataTable = new DataTable();
string[] columns = values[0] as string[];
string[] rows = values[1] as string[];
double[,] matrix = values[2] as double[,];
myDataTable.Columns.Add("---"); //Upper left corner
foreach (string value in columns)
{
myDataTable.Columns.Add(value);
}
foreach (string value in rows)
{
myDataTable.Rows.Add(value);
}
for (int i = 0; i < matrix.GetLength(0); i++)
{
int row = System.Convert.ToInt32(matrix[i, 1]) - 1;
int column = System.Convert.ToInt32(matrix[i, 0]);
myDataTable.Rows[row][column] += matrix[i, 2].ToString() + " to " + matrix[i, 3].ToString() + Environment.NewLine;
}
return myDataTable.DefaultView;
}
【问题讨论】:
-
我已经尝试了链接问题的解决方案,但如果我这样做,我的所有列都会消失。