【发布时间】:2013-12-31 12:03:55
【问题描述】:
我正在尝试获取用户选择的音乐文件列表的自然持续时间。
MediaElement getDetails; //class variable
private void AddMusictoList(List<music> pMusic)
{
getDetails = new MediaElement();
getDetails.MediaOpened += getDetails_MediaOpened;
getDetails.MediaFailed += getDetails_MediaFailed;
getDetails.LoadedBehavior = MediaState.Manual;
Uri path;
list = new music();
foreach (music iMusic in pMusic)
{
path = new Uri(iMusic.path);
list = iMusic;
getDetails.Source = path;
getDetails.Play();
}
}
//the function below is not called.why?
private void getDetails_MediaOpened(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hey");
list.duration = getDetails.NaturalDuration.TimeSpan.ToString(@"hh\:mm\:ss");
MessageBox.Show(list.duration);
this.musicList.Items.Add(list);
}
void getDetails_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
MessageBox.Show("Failed");
}
媒体打开功能没有被提升。我已经调试了代码。 getDetails.Source 之后的自然持续时间保持不变(即设置为自动)并且没有时间跨度。为什么?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的...下次我会注意的:)
-
尝试为
MediaElement的MediaFailed事件添加一个事件处理程序,看看它是否被调用。 -
@LukeWoodward:我已经更新了这个问题。我添加了 mediaFailed,但什么也没发生...没有持续时间和事件仍未引发(mediafailed 和 mediaopened)