2013-05-13 13 views
7

Ich habe eine Windows Metro App in C# geschrieben.Speicherdatei zu System uri?

Hier ist der Code, den ich eine Datei von einer lokalen Musikbibliothek wählen bin mit:

FileOpenPicker openPicker = new FileOpenPicker(); 
openPicker.ViewMode = PickerViewMode.Thumbnail; 
openPicker.SuggestedStartLocation = PickerLocationId.MusicLibrary; 
openPicker.FileTypeFilter.Add(".mp3"); 
openPicker.FileTypeFilter.Add(".wav"); 

StorageFile file = await openPicker.PickSingleFileAsync(); 
if (file != null) 
{ 
    myMediaElement.Source = file; //error here 
} 
else 
{ 
    //error here 
} 

Er sagt, dass StorageFile nicht auf die die Quelle von Mediaelement zu ändern verwendet System.Uri umgewandelt werden. Wie kann ich meine Datei zu einem Link machen? Es scheint, dass Uri("...") akzeptiert nur String wo der Speicherort der Datei ist.

Antwort

8

Sie müssen einen Dateistream zusammen mit SetSource verwenden. Von How to play a local media file using a MediaElement:

var file = await openPicker.PickSingleFileAsync(); 
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
myMediaElement.SetSource(stream, file.ContentType); 
+0

sehr hilfreich! –