Mes vues dataContext est liée à un modèle de présentation avec deux membres ObservableCollections. Dans la vue, j'ai un listView auquel ItemSource est lié est la première observableCollection. Dans l'une des colonnes de LilstViews, je souhaite présenter les valeurs de la seconde Colletion obeservable dans ma présentationModel. Je n'arrive pas à comprendre comment obtenir les valeurs de observableCollection dans ma liste déroulante. Est-ce que quelqu'un a une idée de comment résoudre ce problème?WPF: Problème avec les valeurs de liaison à ComboBox dans GridViewColumn
1
A
Répondre
3
La première chose que vous devez faire est de créer un modèle de données contenant votre ComboBox, dans ce cas j'ai lié la ItemsSource à un DependencyProperty sur la fenêtre de l'hôte. Cela contient le modèle de présentation, qui possède une propriété appelée ComboSource. SelectedValue a été lié, via le DataContext de ListViewItem, à une propriété qui contient la valeur sélectionnée.
<ListView.Resources>
<DataTemplate x:Key="comboBoxTemplate">
<ComboBox
ItemsSource="{Binding
Path=ModelData.ComboSource,
RelativeSource={RelativeSource AncestorType=Window}}"
SelectedValue="{Binding
Path=DataContext.Selection,
RelativeSource={RelativeSource AncestorType=ListViewItem}}"
DisplayMemberPath="Item"
SelectedValuePath="Id"
/>
</DataTemplate>
</ListView.Resources>
Ensuite, vous devrez faire référence à ce du CellTemplate sur le GridViewColumn
<GridViewColumn
Header="Selection"
Width="160"
CellTemplate="{StaticResource comboBoxTemplate}"
/>
Tanks !!! C'était très utile – KaJo