繁体   English   中英

在XAML-WPF中设置列标题名称

[英]Set Column Header Name in XAML- WPF

我想在绑定到数据库的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的前两个列标题和DB的其他两个列标题。

  |Server|Event Log|ServerID|EventLogID|

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

那是因为你离开AutoGenerateColumns="True"将其删除,并且不再有重复。

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

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

<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;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM