2017-03-23 2 views
0

J'ai un listView avec des éléments de StorageFile (comme chaque élément représente .mp3)LISTVIEW SelectionChanged et StorageFiles

<ListView x:Name="songList" HorizontalAlignment="Left" Height="680" Background="{Binding }" ItemsSource="{Binding ListOfStorageFiles , Mode=TwoWay , UpdateSourceTrigger=PropertyChanged}" Margin="986,120,0,-80" VerticalAlignment="Top" Width="294"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding DisplayName}"/> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Jusqu'à présent, j'utilise folderPicker pour obtenir dossier spécifique de l'utilisateur et i lient tous les fichiers au listView en tant que liste de fichiers de stockage. Les fichiers apparaissent et je ne peux pas les sélectionner, mais je dois changer la source mediaElement sur listView SelectionChanged. Malheureusement quand j'ajoute SelectionChanged à listView le compilateur me dit - Object reference not set to an instance of an object. Quelqu'un sait ce qui cause ce comportement? Aussi est-ce la bonne approche pour lire des fichiers multimédia à partir d'une liste (lier le storageFile à la liste).

EDIT: Je dois probablement utiliser Interaction.Behaviors pour EventName = "SelectionChanged"?

+0

Pouvez-vous lier 'la SelectedItem' de la vue de la liste à une propriété sur votre machine virtuelle qui représente le courant fichier? – Lindsay

Répondre

1

J'ai fini avec

<interactivity:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="SelectionChanged"> 
       <core:InvokeCommandAction Command="{Binding OnSelectedSongFromList }" CommandParameter="{Binding ElementName=songList, Mode=TwoWay}"></core:InvokeCommandAction> 

         </core:EventTriggerBehavior> 
      </interactivity:Interaction.Behaviors> 

ensuite dans la machine virtuelle utilise la liste à:

ListOfMedia.MoveTo((uint)asf.SelectedIndex);