仅更改datagrid

时间:2018-02-28 10:43:20

标签: c# wpf sqlite

我知道如何更改数据表中的列名。我问的是如何仅更改显示的名称(如DataGrid)名称。我回顾用户点击的数据表,因此列名需要保持SQL交互。我只想更改WPF表单DataGrid中显示的名称。

现在我有:

SomeSQLiteDataAdapter.Fill(SomeDataTable);
SomeDataGrid.ItemSource = SomeDataTable.DefaultView;

我是否需要制作重复数据表才能显示,并在那里更改?

编辑:

谢谢@Mark!我最终得到了这个:

void MainDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
switch(e.column.header.ToString())
{
  case "ColumnName1":
  {
  e.header = "NewName1";
  break;
  }
  case "ColumnName2":
  {
  e.header = "NewName2";
  break;
  }
}

1 个答案:

答案 0 :(得分:0)

我假设您正在自动生成DataGrid的列,因为如果您不是,那么您需要做的就是在添加显式列时设置.Header属性到网格。

对于自动生成的列,请挂钩AutoGeneratedColumns事件,该事件会在自动生成网格的所有列后触发:

<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="55,46,0,0" VerticalAlignment="Top" Height="149" Width="262" AutoGeneratedColumns="DataGrid_AutoGeneratedColunns"/>

然后,在事件处理程序中,将列名设置为您想要的名称:

private void DataGrid_AutoGeneratedColunns(object sender, EventArgs e)
{
  if (dataGrid.Columns.Count > 0)
  {
    dataGrid.Columns.Where(a => a.Header.ToString() == "query column name").First().Header = "desired display name";
  }
}

需要进行零次计数检查,因为每次网格自动生成列时都会触发事件,有时可能是零列。