Problème de liaison DataGridComboBoxColumn.ItemsSource
J'ai 3 tables:
L'élément qui est le DataContext - il a une colonne de navigation de Groupe
Groupe a une colonne de navigation de la Catégorie.
Je veux avoir dans la grille de données à la fois (Catégorie & Group) colonnes et quand je choisir une catégorie à laquelle il doit s'afficher dans le groupe de col seule la Catégorie.Groupes de.
Voici le code, je suis en train de travailler sur:
<tk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}">
<tk:DataGrid.Columns>
<!--Works-->
<tk:DataGridComboBoxColumn
Header="Categroy"
DisplayMemberPath="Title"
SelectedValuePath="CategoryId"
SelectedValueBinding="{Binding Group.Category.CategoryId}"
ItemsSource="{Binding Context.Categories,
Source={x:Static Application.Current}}"
/>
<!--Look at these two things:-->
<!--This does work-->
<tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl
ItemsSource="{Binding Group.Category.Groups}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type data:Group}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
<!--But this does NOT work, even it's the same source-->
<!--Notice I even tried a dummy converter and doesnt reach there-->
<tk:DataGridComboBoxColumn
Header="Group"
DisplayMemberPath="Title"
SelectedValuePath="GroupId"
ItemsSource="{Binding Group.Category.Groups,
Converter={StaticResource DummyConverter}}"
SelectedValueBinding="{Binding Group.GroupId}"
/>
</tk:DataGrid.Columns>
</tk:DataGrid>
Mise à jour
Voulez-vous dire que le problème est que la propriété ItemsSource ne peut pas être un non-statique de la Liaison?
Je soupçonne donc, parce que même j'ai mis le ItemsSource de {Binding}
avec le DummyConverter
il ne s'arrête pas dans le convertisseur; et dans la Catégorie ComboBox, il fonctionne très bien.
OriginalL'auteur Shimmy | 2009-11-12
Vous devez vous connecter pour publier un commentaire.
Les colonnes dans la grille de données n'ont pas un datacontext, comme ils ne sont jamais ajouté à l'arborescence visuelle. sembler un peu bizarre, mais un regard à vince blog, son obtenu un bon exemple de la présentation visuelle. une fois que la grille est dessinée les cellules ont un contexte de données et vous pouvez définir les zones de liste déroulante source des éléments dans leur utilisation normale liaisons (pas de ressources statiques..)
Vous pouvez accéder à la liste déroulante source des éléments en tant que tels:
Ont un look ici et aussi ici pour un peu de code. Vous aurez aussi besoin de définir les éléments à la source pour les non edting élément que dans ce post
Je ne pense pas que la grille de données de mise en œuvre de la ComboColumn changé dans le .net 4 release
J'ai utilisé la même approche, mais la source de données ne semble lier la colonne. Je vois vide de la zone de liste déroulante dans la grille de données
Chuck un debugConverter sur elle et voir si les liaisons jamais incendie (wpftutorial.net/DebugDataBinding.html)
Ne devrait-elle pas également de travailler juste pour cible un particulier ElementName qui a un DataContext?
OriginalL'auteur
J'ai été en utilisant MVVM et je voulais lier la
ItemSource
de la colonne à une collection d'objets dans la fenêtre de contexte de données. J'ai essayé de 10 façons différentes et rien n'a fonctionné jusqu'à ce que j'ai trouvé cette réponse.L'astuce consiste à définir un
CollectionViewSource
à l'extérieur de la grille et ensuite de référence à l'intérieur de la grille à l'aideStaticResource
. Par exemple,OriginalL'auteur