1

我有一个应用程序,它在面板上包含许多控件,每个控件都有自己的 MediaElement 播放视频。我一直在研究 Silverlight 3 的新 UI 虚拟化功能,以在较小的视口中滚动浏览这些控件中的许多控件时提高性能。

根据我的经验,我的理解是,每当 MediaElement 控件被删除然后重新添加到可视化树中时,媒体都必须重新缓冲。我猜想尝试在填充有 MediaElement 控件的任何类型的自定义面板上实现 UI 虚拟化会导致任何屏幕外元素停止播放,然后在它们滚动到屏幕后立即播放之前重新缓冲。有没有人遇到过这种情况?

如果是这种情况,是否有任何解决方法或可能的方法来使用包含 MediaElements 的控件实现 UI 虚拟化而不影响正在进行的播放?

4

1 回答 1

2

我认为这个问题没有什么好的解决方案,我在实现拖放时遇到了同样的重新缓冲问题,因为必须暂时删除控件,然后在可视树的新位置重新添加,导致 MediaElement缓冲。

如果其他人有这个问题,我最好的解决方法是在实际控件上使用 VideoBrush,并将所有相应的 MediaElements 添加到应用程序级别的隐藏面板中。如果控件暂时离开可视化树(由于 UI 虚拟化或拖放),则仅移除 VideoBrush 并且实际 MediaElement 停留在隐藏面板上,因此不会发生重新缓冲。

于 2010-03-17T19:50:50.520 回答