2010-06-18 7 views
1

J'ai un DataGrid avec ItemsSource défini à une liste de produits et J'ai un DataGridComboBoxColumn à l'intérieur du DataGrid avec ItemsSource défini à une liste de catégories. De cette façon, je veux que l'utilisateur choisisse une certaine catégorie pour chaque produit.WPF: liaison DataGrid à une liste <Product> ayant un DataGridComboBoxColumn lié à une liste <Category>?

je reçois toujours l'erreur de liaison:

erreur de chemin de BindingExpression: propriété 'Catégories de introuvable sur « objet » « » produit »(Hash)

Eh bien, je ne veux pas faire la liste des catégories partie de l'entité Product en tant que relation 1: N, bien que cela fonctionnerait de cette manière.

Je veux les garder séparés.

Quelqu'un sait-il une solution de contournement?

Répondre

1

Créer une classe avec propriété statique comme

static class ValueLists 
{ 
    public static IEnumerable<Category> Categories {get {... }} 
} 

et l'utilisation après la liaison

ItemsSource="{x:Static myNs:ValueList.Categories}" /> 
+0

J'ai trouvé un bon lien traitant exactement les mêmes choses que je dois: http://stackoverflow.com/questions/1633800/wpf-datagrid-datagridcomboxbox-itemssource-binding-to-a-collection-of-collection – msfanboy

+0

Je ne peux pas implémenter INotifyPropertChanged en classe statique ce dont j'ai besoin ;-) au lieu de la liaison statique wouldnt que cela fonctionne? => ItemsSource = "{Chemin de liaison = DataContext.Categories, RelativeSource = {RelativeSource FindAncestor, AncestorType = {x: Type Fenêtre}}}" IsReadOnly = "True" Background = "Blanc" /> – msfanboy

0

This est probablement pertinent à votre problème.

What is happening here?
The Columns collection is just a property in the Datagrid; this collection is not in the logical (or visual) tree, therefore the DataContext is not being inherited, which leads to there being nothing to bind to.

0

c'est un peu tard la réponse, mais afin de partager les connaissances que je trouve ceci:

Binding a WPF DataGridComboBoxColumn with MVVM

Cette réponse montre que n'est pas toujours obligatoire de convertir la deuxième liste à une classe statique , vous pouvez toujours spécifier une RelativeSource et rechercher un ancêtre spécifique, puis vous lier à la liste "other" de votre ViewModel.

Questions connexes