MediaElement:加载时显示

时间:2013-05-27 18:20:25

标签: c# xaml

我有一个带有视频缩略图的图像和带有真实视频的MediaElement,如下所示:

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

在视频的当前时间使用属性更改了侦听器:

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));
    }
}

使用此事件处理程序:

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
        }
    }
}

当视频处于42ms(第一帧)时,我希望从缩略图转换为视频。问题是,似乎永远不会发生一个时间跨度改变的事件......

1 个答案:

答案 0 :(得分:1)

您可以添加TimeSpan属性(我们称之为CurrentTime)并将MediaElement的Position属性绑定到CurrentTime。

当CurrentTime改变时,检查它是否比任意epsilon“更大”(假设42ms,大约是一帧的持续时间)。如果它更大,那就做可见性技巧并停止比较。