2009-11-23 36 views
0

如果我有一个名为VideoMedia(它包含一个标准的Uri视频路径)的自定义类,并且我有一个DataTemplate,我用它来创建一个视频播放器控件。WPF DataTemplates和自定义类来处理事件

<DataTemplate DataType="{x:Type v:VideoMedia}"> 
    <MyLib:VideoPlayer/> 
</DataTemplate> 

的VideoPlayer类扩展用户控件,只需控制视频文件的回放)

如何添加一个事件处理程序到VideoMedia类,因此它可以包含一个排序TimeStarted属性?我在运行时需要它,所以我可以告诉视频是否在运行。

我正在存储一个IDictionary<int, VideoMedia>集合,我每隔2秒迭代一次以判断视频是否正在播放。有没有更好的方法来做到这一点?

回答

1

如果您的VideoPlayer usercontrol正确建立了IsPlaying依赖属性。只要做一个绑定到VideoMedia.IsPlaying到VideoPlayer.IsPlaying,你很好去。

<MyLib:VideoPlayer IsPlayingDP="{Binding IsPlaying}" ... /> 
+0

你的意思是使用模板绑定? – Mark 2009-11-23 10:48:41

+0

刚更新了帖子,IsPlayingDP是你的用户控件属性,IsPlaying是你的Viewmodel属性。 – 2009-11-23 16:06:08

+0

我得到:无法使用绑定检索值,并且不存在有效的回退值;改为使用默认值。 BindingExpression:路径= IsPlaying模块; DataItem ='VideoMedia'(HashCode = 51593576);目标元素是'VideoPlayer'(Name ='UserControl');目标属性是'IsPlaying'(类型'布尔') – Mark 2009-11-23 21:44:00