WPF binding collection dans header et colonne dans un datagrid
Bonjour,
je voudrais afficher dans l’entête et dans la cellule les valeurs d'une collection.
Dans ma collection j'ai des valeurs, les champs 'Name' et 'Value', je veux afficher 'Name' dans l'entete et 'Value' dans la colonne.
Je suis dans une application wpf mvvm.
Dans 'Users' j'ai bien une collection de 'User' avec ses données, mais à l'affichage je n'obtient aucune valeur, ni dans l'entête ni dans les colonnes.
LE code C# :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
private ObservableCollection<User> co_Users;
/// <summary>
/// Propriété UserFields
/// </summary>
public ObservableCollection<User> Users
{
get { return co_Users; }
set
{
if (co_Users != value)
{
co_Users = value;
RaisePropertyChanged(() => Users);
}
}
} |
le code Xaml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Users}">
<DataGridTextColumn Binding="{Binding Users[1].Value}" Header="{Binding Users[1].Name}" />
<DataGridTextColumn Binding="{Binding Users[2].Value}" Header="{Binding Users[2].Name}" />
<DataGridTextColumn Binding="{Binding Users[3].Value}" Header="{Binding Users[3].Name}" />
<DataGridTextColumn Binding="{Binding Users[4].Value}" Header="{Binding Users[4].Name}" />
<DataGridTextColumn Binding="{Binding Users[5].Value}" Header="{Binding Users[5].Name}" />
</DataGrid.Columns>
</DataGrid> |
[France] Profil pro
Inscrit en
septembre 2009
Messages
29
[Plus de détails...]
Points
18
Par défaut
j'ai essayé une autre méthode:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
// la classe
public class ColumnDescriptor
{
public string HeaderText { get; set; }
public string DisplayMember { get; set; }
}
// mon viewmodel
public ObservableCollection<ColumnDescriptor> Columns { get; private set; }
this.Columns = new ObservableCollection<ColumnDescriptor>();
foreach (User item in Users)
{
Columns.Add(new ColumnDescriptor { HeaderText = item.Name, DisplayMember = "InputValue"});
} |
le code xaml :
Code:
1 2 3 4 5 6 7 8 9
|
<ListView ItemsSource="{Binding Users}">
<ListView.View>
<GridView local:GridViewColumns.DisplayMemberMember="DisplayMember"
local:GridViewColumns.HeaderTextMember="HeaderText" local:GridViewColumns.ColumnsSource="{Binding Columns}">
</GridView>
</ListView.View>
</ListView> |
Mais je n'obtient pas le résultat escompté :( , j'ai bien les entêtes, mais dans les cellules j'ai les collections de chaque User et non la valeur 'Value' attaché.
Merci d'avance pour votre aide :)