2009-08-26 8 views
0

J'essaie de définir une liste multicolonne dans xaml (visual studio 2008), puis j'y ajoute des éléments dans C#. J'ai vu beaucoup de messages sur ce sujet, et j'ai essayé les différentes méthodes, mais j'ai des erreurs.Multicolumn ListView dans WPF - erreurs

mon code xaml est ci-dessous, VS ne signale aucune erreur.

<ListView Height="234.522" Name="chartListView" Width="266.337"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="Name" Width="70"/> 
     <GridViewColumn Header="ID" /> 
    </GridView> 
    </ListView.View> 
</ListView> 

pour essayer d'ajouter des données aux colonnes, je crée un bouton et placez le code dans le bouton clic:

private void button3_Click(object sender, RoutedEventArgs e) 
    { 
     chartListView.Items.Add("item1").SubItems.Add("item2"); 
    } 

l'erreur qui montre est sous-éléments est:

'int' ne contient pas de définition pour 'SubItems' et aucune méthode d'extension 'SubItems' acceptant un premier argument de type 'int' n'a été trouvée (manque-t-il une directive using ou une référence d'assembly?) D: \ devel \ VS \ pchart \ pchart \ pchart \ Window1.xaml.cs

Aussi, j'essayé de regarder quelques autres postes sur les contrôles listview tels que

ListView - Inserting Items

moi avons essayé le code: il

ListViewItem article = new ListViewItem(); item.Text = anInspector.getInspectorName(). ToString();

et obtenu presque la même erreur sur item.Text comme je l'ai fait avec SubItems. Y a-t-il quelque chose dans mon code ou dans la définition de projet qui me manque?

Merci pour toute aide

Répondre

3

Il n'y a pas une telle chose comme « sous-éléments » dans WPF ListView (peut-être vous confondez avec Windows Forms ListView). La propriété Items renvoie une collection de object de toute façon, et object n'a pas de propriété SubItems. En fait, chaque élément de la ListView peut avoir des propriétés multiples et que vous spécifiez lequel vous souhaitez afficher avec la propriété DisplayMemberBinding:

XAML

<ListView Height="234.522" Name="chartListView" Width="266.337"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="70"/> 
     <GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" /> 
    </GridView> 
    </ListView.View> 
</ListView> 

C#:

private void button3_Click(object sender, RoutedEventArgs e) 
{ 
    chartListView.Items.Add(new { Name = "test1", ID = "test2" }); 
} 

(il ne doit pas être des objets anonymes, vous pouvez utiliser des classes nommées bien sûr ...)

+0

hey merci, juste ce que je cherchais . – Will