2008-11-13 5 views
1

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

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}" 
    /> 
+0

Tanks !!! C'était très utile – KaJo

Questions connexes