2010-10-27 8 views
0

Si je lie une table de données à WPF Toolkit-data-grid ..... il n'est pas nécessaire de spécifier les noms de colonne ici ... elle prendra automatiquement cela du datable.populate listview dynamiquement

Mais si je lie une vue de liste à une collection observable ... Je dois spécifier les noms d'en-tête de colonne pour chaque colonne un par un ... dans le fichier xaml.

Donc, si j'ai une liste de noms de colonnes ->List<ColumnHeaderNames> avec liste des éléments pour remplir ->List<Object to populate list>

Je peux lier liste des éléments à la liste vue ... et la liste des noms de colonnes à la liste -view header ... mais je ne sais pas s'il y a une propriété dans la vue liste ... pour lier mon en-tête.

Cela signifie que ...

J'ai un contrôle utilisateur dans lequel j'ai 2 la liste des vues sur ... on est disponible et un autre est sélectionné. J'ai besoin que ce contrôle utilisateur soit réutilisable ... Cela signifie ... si je lie une liste comme ... la liste shud contient deux colonnes ... la première colonne avec le nom "état" et la deuxième colonne le nom "comté" ". Mais si je lie une liste comme .. Alors listview shud contient 3 colonnes ... avec des noms de colonnes comme fruit, couleur et prix.

Répondre

1

Je pense que le mieux pour vous serait de définir la propriété View de votre ListView à un GridView. Ensuite, vous pouvez facilement lier l'en-tête de colonnes:

<ListView ItemsSource="{Binding ListOfValues}"> 
      <ListView.View> 
       <GridView >     
        <GridViewColumn DisplayMemberBinding="{Binding XVal}" Header={binding header}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

pour plus d'informations vous pouvez y aller http://msdn.microsoft.com/en-us/library/system.windows.controls.gridview.aspx

+0

Vous voulez dire "en-tête" dans En-tête = {en-tête de liaison} est la liste des colonnes. – Relativity

+0

si "en-tête" est l'une des propriétés des éléments dans votre liste d'éléments (ainsi que XVal par exemple), oui. Sinon, vous pouvez changer la source de votre liaison pour Header, mais n'oubliez pas que DataContext est défini sur l'élément actuel de votre liste. – Gerrrard

+0

J'ai plus d'une colonne dans la liste des sources ... pas une seule colonne. Et j'ai besoin de générer dynamiquement des colonnes de grille – Relativity

0

Et si vous utilisez un struct qui contient la liste et le nom: < {listOfFruits, « Fruits »} , {listofStates, "Etats>

Et puis:

<ItemsControl ItemsSource="{Binding ListOfStruct}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <ListView ItemsSource="{Binding ListOfitem}"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn DisplayMemberBinding="{Binding}" Header="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}, Path=DataContext.Header}"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Il est pas la meilleure façon, mais je ne sais pas comment faire

+0

Qu'est-ce que vous faites de cette façon? ... Créez-vous une liste de gridviews? – Relativity

+0

liste de listview où la propriété view est définie sur un gridViw qui ne contient qu'une seule colonne – Gerrrard

Questions connexes