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:
4 Réponses :
Vous pouvez le modifier sur l'événement Si la grille est déjà liée, vous devriez pouvoir faire: p> itemDatabound code>:
yourDataGrid.Columns[0].Header = "Text you want in header.";
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"; }
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> puis je décore mes membres de la classe de données Avec le nouvel attribut ... p> alors j'écris mon gestionnaire d'événements autogénérateursColumn ... p> ... 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;
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;
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: 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";
}
}
}