#c# #wpf
#c# #wpf
Вопрос:
Я хочу преобразовать естественную продолжительность видеофайла в секунды, потому что я хочу установить максимальное значение индикатора выполнения. Но у меня ошибка, подобная этому, УКАЗАННОЕ ПРИВЕДЕНИЕ НЕДОПУСТИМО.
<ProgressBar Name="pb" Height="23" VerticalAlignment="Center"
Value="{Binding ElementName=Video, Path=Position,
Converter={StaticResource progressbarconvert}}"
Maximum="{Binding ElementName=Video,Path=NaturalDuration,
Converter={StaticResource progressbarconvert}}"></ProgressBar>
Это мой обязательный код для индикатора выполнения.
TimeSpan t = (TimeSpan)value;
int seconds = t.Seconds;
seconds = t.Minutes * 60;
seconds = t.Hours * 360;
return seconds;
Это ошибка моего кода конвертера. И у меня ошибка в значении TimeSpan t = (TimeSpan). В чем причина этой ошибки. Есть ли какое-либо альтернативное решение для присвоения длине видео максимального значения индикатора выполнения???
Комментарии:
1. Почему бы просто не сделать
return (int)t.TotalSeconds;
? Кроме того, при отладке, какой типvalue
в отладчике, если вы это делаетеvalue.GetType()
?2. На самом деле тип значения является автоматическим, потому что я использую естественную длительность, поэтому возвращает автоматическое значение. Он показывает время после воспроизведения видео. Скотт, не могли бы вы помочь мне решить проблему.
3. У Ateik есть правильный ответ.
Ответ №1:
Во-первых, NaturalDuration имеет тип Duration , поэтому приведение будет отличаться от Position https://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.naturalduration(v=vs.110).aspx?f=255amp;MSPPError=-2147217396
Во-вторых, при приведении к длительности вам нужно проверить значение HasTimeSpan, потому что, если видео не загружено и не воспроизведено, у вас еще не будет этого значения