2009-10-08 55 views
1

我有一個應用程序包含面板上的許多控件,每個控件都有自己的MediaElement播放視頻。我一直在研究Silverlight 3的新的UI虛擬化功能,以便在較小視圖端口中滾動瀏覽許多這些控件時提高性能。Silverlight MediaElement和UI虛擬化

從我的經驗來看,我的理解是,只要MediaElement控件被刪除,然後重新添加到可視化樹中,媒體就必須重新排版。我猜測試圖在任何裝有MediaElement控件的自定義面板上實現UI虛擬化會導致任何屏外元素停止播放,然後在它們滾動到屏幕上之前立即重新播放。有沒有人有過這種情況的經驗?

如果是這種情況,是否有任何解決方法或可能的方式來實現帶有包含MediaElements的控件的UI虛擬化,而不影響正在進行的播放?

回答

2

我不認爲這個問題有什麼很好的解決方案,我遇到了同樣的重新緩存問題實現拖放,因爲控件必須暫時刪除,然後重新添加到視覺樹中的新位置,導致MediaElement被拒絕。

如果其他人有這個問題,我最好的解決方法是在實際控件上使用VideoBrush,將所有相應的MediaElement添加到應用程序級的隱藏面板中。如果控件暫時離開視覺樹(由於UI虛擬化或拖放),只有VideoBrush被移除,並且實際的MediaElement停留在隱藏面板上,因此不會發生重新緩存。