2017-03-23 2 views
0

Ich habe eine Listview mit StorageFile ElementenListview Selection und 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> 

I folderPicker Bisher (wie jedes Element MP3-Datei steht) verwenden, um bestimmte Ordner vom Benutzer zu erhalten und ich binde alle Dateien auf dem listView als eine Liste von storageFiles. Die Dateien werden angezeigt und können nicht ausgewählt werden, aber ich muss die mediaElement Source in listView SelectionChanged ändern. Leider, wenn ich SelectionChanged zu listView hinzufüge, sagt mir der Compiler - Object reference not set to an instance of an object. Wer weiß, was dieses Verhalten verursacht? Dies ist auch der richtige Ansatz zum Abspielen von Mediendateien aus einer Liste (Bindung der Speicherdatei an die Liste).

EDIT: Ich muss wahrscheinlich Interaction.Behaviors für EventName = "SelectionChanged"?

+0

Können Sie der Listenansicht des 'SelectedItem' auf eine Eigenschaft auf Ihrer VM binden, die den aktuellen darstellt Datei? – Lindsay

Antwort

1

landete ich mit

<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> 

Dann in der VM i die Liste verwenden:

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