2013-05-27 9 views
0

У меня есть изображение с эскизом видео и MediaElement с реальным видео, например, так:MediaElement: показать при загрузке

<Image Source="{Binding thumbnailurl}"/> 
<MediaElement Position="{Binding currenttime}" MediaOpened="MediaElement_Opened" Source="{Binding videourl}" AutoPlay="True" Visibility="Collapsed"/> 

С свойством изменился слушатель на CurrentTime ролика:

private TimeSpan _currenttime; 
public TimeSpan currenttime 
{ 
    get { return _currenttime; } 
    set 
    { 
     if (_currenttime == value) return; 
     _currenttime = value; 
     NotifyTimeSpanChanged("timespan"); 
    } 
} 

protected void NotifyTimeSpanChanged(string name) 
{ 
    System.ComponentModel.PropertyChangedEventHandler handler = PropertyChanged; 
    if (handler != null) 
    { 
     handler(this, new System.ComponentModel.PropertyChangedEventArgs(name)); 
    } 
} 

с этим EventHandler:

private void MyClass_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) 
{ 
    if (e.PropertyName.Equals("timespan")) 
    { 
     MediaElement me = (MediaElement)sender; 

     if (me.Position.Milliseconds > 42) 
     { 
      me.Visibility = Visibility.Visible; // show video now 
     } 
    } 
} 

Я хочу, чтобы сделать переход от steamless thumbnai l к видео, когда видеоролик составляет 42 мс (первый кадр). Проблема в том, что никогда не происходит событие изменения времени ...

ответ

1

Вы можете добавить свойство TimeSpan (назовем его CurrentTime) и связать Position свойством MediaElement to CurrentTime.

Когда CurrentTime изменяется, проверьте, что он «больше», чем произвольный эпсилон (скажем, 42 мс, что касается продолжительности одного кадра). Если он больше, сделайте трюк видимости и остановите сравнение.

+0

Хорошая идея! Ты посадил меня на правильный путь. Пожалуйста, уточните мой обновленный вопрос :). –

+1

@PhilippeMaes Вам нужна позиция = "{Время привязки, режим = TwoWay}". – John

+0

Спасибо, ребята, удивительный –

Смежные вопросы