2011-03-01 6 views
1

J'ai une grille de données de wpf Toolkit, avec l'itemource lié à un Observable<Item>. Dans la classe Item, j'ai une autre liste Observable<bool> contenant les valeurs à afficher.Double liste - WPF Toolkit DataGrid

Je souhaite afficher ces valeurs dans un modèle personnalisé. Si possible, je veux aussi montrer d'autres lignes (qui sont des propriétés normales).

Comment puis-je effectuer cela? Merci pour vos réponses. Mise à jour (juste pour clarifier): la deuxième liste doit être affichée dans les colonnes normales, pas comme maître/détail. Imaginons que la deuxième liste contienne 2 bools et que la classe Item contienne 1 propriété supplémentaire. Dans ce cas, 3 colonnes doivent être affichées.

+0

Pourriez-vous élaborer ce que vous voulez montrer? Est-ce que vous voulez créer des lignes en fonction de la valeur dans Observable , comme row1 pour afficher Item et les lignes suivantes pour afficher les valeurs Observable dans sa colonne? OU vous voulez créer un modèle de liste pour la propriété Observable dans l'interface utilisateur? – RockWorld

+0

Je viens de mettre à jour la question, voir ci-dessus. –

Répondre

2

Vous pouvez créer une deuxième grille de données et lier SelectedItem.Items de la première grille à la source d'éléments de seconde. Ou vous pouvez inclure deuxième DataGrid dans les détails de ligne de votre DataGrid comme celui-ci:

<DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <DataGrid ItemsSource="{Binding Items}"/> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 

Jetez un oeil à this examples et this

+0

Salut Sergey, merci pour votre réponse. Cependant, la deuxième liste devrait être affichée dans les colonnes normales, pas comme maître/détail. Imaginez que la deuxième liste contienne 2 'bools', et la classe Item contient 1 propriété supplémentaire. Dans ce cas, 3 colonnes doivent être affichées. –

+1

Dans ce cas, je pense que vous ne pouvez créer que des détails de ligne ou créer une fonction qui créera des colonnes supplémentaires lors de l'exécution. Est impossible avec des modèles pour faire le nombre variable de colonnes, mais vous pouvez essayer créer le modèle de colonne personnalisé –

+0

ce lien: http://stackoverflow.com/questions/320089/how-do-i-bind-a-wpf-datagrid-to -a-variable-nombre-de-colonnes peut vous aider à –

1

Vous pouvez écrire propriété attachée à DataGrid qui va créer des colonnes supplémentaires pour vous sur la grille. Cette implémentation de propriété définira la liaison avec les valeurs observables individuelles.

+0

Ça sonne bien, mais pourriez-vous le spécifier plus en détail ou créer un petit exemple? Puisque j'ai déjà essayé une sorte de cette solution, mais je n'ai pas réussi ... –

+1

1> Créer AttachedProperty pour la grille qui sera de type Collection de votre ColumnType (Ceci doit être une classe unique). 2> Définir le gestionnaire d'événement modifié par la propriété. 3> Dans le gestionnaire d'événements, recherchez les valeurs dans la liste. Créez DataGridColumns pour la liste. définissez la liaison sur les colonnes et ajoutez-les à la collection de colonnes DataGrid. – RockWorld

+0

Merci. Je vais essayer cela et vous revenir plus tard. –

Questions connexes