Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MediaPlayer课程聆听自然适应。更改_C#_Wpf - Fatal编程技术网

C# MediaPlayer课程聆听自然适应。更改

C# MediaPlayer课程聆听自然适应。更改,c#,wpf,C#,Wpf,我正在使用MediaPlayer类用c#编写一个自定义音频播放器。我已经实现了一个滚动条,用户可以通过一个轨迹进行搜索,这就是我遇到的问题 当用户选择音频曲目(从xml播放列表加载)时,应用程序计算曲目的长度(以秒为单位),并将其设置为滚动条的最大值。除了NaturalDuration之外,这一切都可以正常工作。TimeSpan属性有时返回0而不是数量。我通过添加一个循环来证明这一点,该循环在NaturalDuration.Hastinmespan为true时退出,然后返回NaturalDura

我正在使用MediaPlayer类用c#编写一个自定义音频播放器。我已经实现了一个滚动条,用户可以通过一个轨迹进行搜索,这就是我遇到的问题

当用户选择音频曲目(从xml播放列表加载)时,应用程序计算曲目的长度(以秒为单位),并将其设置为滚动条的最大值。除了NaturalDuration之外,这一切都可以正常工作。TimeSpan属性有时返回0而不是数量。我通过添加一个循环来证明这一点,该循环在NaturalDuration.Hastinmespan为true时退出,然后返回NaturalDuration.TimeSpan值


我的问题是当NaturalDuration.HasTimeSpan更改为true时,如何才能获得NaturalDuration.TimeSpan

mediaPlayer = new MediaPlayer();
mediaPlayer.MediaOpened += MediaPlayer_MediaOpened;
mediaPlayer.Open(new Uri(mediaFilePath, UriKind.Absolute));

...

private void MediaPlayer_MediaOpened(object sender, EventArgs e)
{
    if (mediaPlayer.NaturalDuration.HasTimeSpan)
    {
        SliderMaximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
        mediaPlayer.Play();
    }
}

我不确定我是否明白。。。如果您想在Hastinespan发生更改时执行某些操作,只需使用inpc或其他处理程序进行更改。或者手动将HastineMespan设置为true后是否要获取timespan?Inpc?据我所知,没有一个处理程序通知Hastinmespan的变化。我基本上想把我自己的监听器添加到这个变量中,如果可能的话。但是构建的MediaPlayer类不需要实现它吗?或者这样做,这就是你所说的……我相信有一种更为资源密集型的解决方案,使用反射(如果所有其他方法都失败,将查找链接),尽管这可能根本没有必要。你知道为什么它不能正常返回吗?即使你有处理者,你会怎么做?