11

我想在绑定到数据库的 WPF 数据网格中设置用户定义的列标题。

用于显示 ServerID、EventlogID 我想在列标题中显示为 Server、Event Log。

我已经尝试过这些......

 <DataGrid x:Name="dataGrid1" ItemsSource="{Binding}" AutoGenerateColumns="True" >
     <DataGrid.Columns>
        <DataGridTextColumn Header="Server" Width="Auto" IsReadOnly="True"  Binding="{Binding Path=ServerID}" />
            <DataGridTextColumn Header="Event Log" Width="Auto" IsReadOnly="True"  Binding="{Binding Path=EventLogID}" />
      </DataGrid.Columns>
   </DataGrid>

这很好用,它改变了列标题并且数据也显示出来了。

但我的问题是,它作为 XAML 的前两列标题和数据库的其他两列标题显示两次。

  |Server|Event Log|ServerID|EventLogID|

如何克服这种复制?请帮忙!

4

2 回答 2

12

那是因为你留下了AutoGenerateColumns="True"删除它,不会有更多的重复。

您当前正在自动添加一次列,然后手动添加第二次!

于 2012-12-19T12:50:00.450 回答
0

XAML:将AutoGeneratingColumn="OnAutoGeneratingColumn"事件添加到事件DataGrid

<DataGrid x:Name="dataGrid1"  ItemsSource="{Binding YourItems}" AutoGenerateColumns="True" AutoGeneratingColumn="OnAutoGeneratingColumn">

代码隐藏:添加事件处理程序如下:

private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
  switch (e.Column.Header)
  {
    case "ServerID":
      e.Column.Header = "Server";
      break;
    case "EventID":
      e.Column.Header = "Event";
      break;   
    default:
      e.Cancel = true;
      break;
  }
}
于 2019-04-26T13:44:27.240 回答