2010-12-04 18 views
0

J'utilise le ListView suivant:MVVM: Bind ListView.SelectedItem.Property à VM Propriété

<ListView DataContext="{StaticResource mainViewModel}" ItemsSource="{Binding Items.View}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=CurrentFile, Source={StaticResource anotherViewModel}, Mode=OneWayToSource}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="File Path" DisplayMemberBinding="{Binding FilePath}" /> 
      <GridViewColumn Header="Creation" DisplayMemberBinding="{Binding CreationDate}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

Je liant les ListView (des objets "Fichier") à un ViewModel et SelectedItem à un « fichier "objet sur un autre ViewModel. Cela fonctionne bien mais maintenant je n'ai pas besoin de lier tout l'objet, mais une propriété. C'est à dire. au lieu de quelque chose comme SelectedItem="{Binding Path=CurrentFile j'ai besoin de SelectedItem.FilePath="{Binding Path=FilePath. Est-ce possible ou est-ce que la liaison SelectedItem doit correspondre au même type d'objet de la collection ListView?

+0

quel est votre scénario? vous essayez d'accomplir quelque chose d'étrange à mon avis. – akonsu

+0

True. Je charge un contrôle utilisateur Windows Media Player avec son propre viewmodel basé sur le fichier sélectionné. Ce contrôle doit être réutilisable et ne peut donc pas faire partie du modèle mainViewModel. Je pourrais juste le faire dans le code derrière mais j'essaye de coller aux modèles si possible. – DaveO

Répondre

3

SelectedItem doit pointer vers un objet présent dans le ItemsSource. Vous devez regarder SelectedValue et SelectedValuePath pour votre scénario.