7
votes

WPF - Modification du nom de la colonne sur Data Bound DataGrid

Fondamentalement, j'utilise la propriété ItemSource du DataGrid pour lier une liste générique à mon DataGrid. Cependant, j'aimerais vraiment changer les rubriques, j'ai essayé ce qui suit, mais j'obtiens une exception d'exécution: xxx


0 commentaires

4 Réponses :


4
votes

Vous pouvez le modifier sur l'événement itemDatabound code>: xxx pré>

Si la grille est déjà liée, vous devriez pouvoir faire: p>

yourDataGrid.Columns[0].Header = "Text you want in header.";


0 commentaires

3
votes

Evénement autogogeneratedColumns sur WPF pour changement Nom de colonne

datagrid1.AutoGeneratedColumns += datagrid1_AutoGeneratedColumns;

void datagrid1_AutoGeneratedColumns(object sender, EventArgs e)
{
    datagrid1.Columns[0].Header = "New Column Name";
}


0 commentaires

19
votes

J'ai utilisé l'événement AutogeneratingColumn et un attribut pour définir mes noms de colonnes.

Créez d'abord une classe d'attributs ... p> xxx pré>

puis je décore mes membres de la classe de données Avec le nouvel attribut ... p> xxx pré>

alors j'écris mon gestionnaire d'événements autogénérateursColumn ... p> xxx pré>

... et attachez-la à ma grille et à mes tests ... p>

        dgPrimaryGrid.AutoGeneratingColumn += dgPrimaryGrid_AutoGeneratingColumn;

        var data = new object[] 
        {
            new Test() { Name = "Joe", UserID = "1" }
        };
        dgPrimaryGrid.ItemsSource = data;


1 commentaires

très agréable! Cependant, vous pouvez simplifier le bloc 3ème code après avoir déclaré DESC à: Si (Desc.attributes [typeof (ColumnNameAttribute)] est ColumnamayeTribute Att) E.Column.header = Nom;



0
votes

1) Éteignez la génération de colonne automatique et générez vos colonnes de grille de données dans le code de programme: xxx pré>

puis "Bindigname0" est le nom de liaison interne de la colonne 0 et "displayName0" est Le nom que l'utilisateur verra. p>

2) Si vous souhaitez utiliser la génération de colonne automatique, les noms d'affichage des colonnes peuvent être définis dans l'événement "AutogeneratingColumn": P>

MyDataGrid.AutoGeneratingColumn += MyDataGrid_AutoGeneratingColumn;

...

private void MyDataGrid_AutoGeneratingColumn(object sender, 
              DataGridAutoGeneratingColumnEventArgs e)
{
  DataGridBoundColumn TempColumn;
  string BindingName;

  if (e.Column is DataGridBoundColumn)
  {
    TempColumn = e.Column as DataGridBoundColumn;
    BindingName = (TempColumn.Binding as Binding).Path.Path;
    if (BindingName == "BindingName0")
    {
      TempColumn.Header = "DisplayName0";
    }
    else if (BindingName == "BindingName1")
    {
      TempColumn.Header = "DisplayName1";
    }
  }
}


0 commentaires