Silverlight MediaElement и виртуализация пользовательского интерфейса - PullRequest
1 голос
/ 08 октября 2009

У меня есть приложение, которое содержит множество элементов управления на панели, каждое из которых имеет собственный MediaElement, воспроизводящий видео. Я изучал новые возможности виртуализации пользовательского интерфейса в Silverlight 3, чтобы повысить производительность при прокрутке многих из этих элементов управления в меньшем виде порта.

Исходя из моего опыта, я понимаю, что каждый раз, когда элемент управления MediaElement удаляется, а затем повторно добавляется в визуальное дерево, медиа-объект должен создавать буфер. Я предполагаю, что попытка реализовать виртуализацию пользовательского интерфейса на любой пользовательской панели, заполненной элементами управления MediaElement, приведет к тому, что любые неэкранные элементы прекратят воспроизведение, а затем создадут буфер перед воспроизведением, как только они будут прокручены на экране. У кого-нибудь был опыт в этой ситуации?

Если это так, есть ли какие-либо обходные пути или возможные способы реализации виртуализации пользовательского интерфейса с элементами управления, содержащими MediaElements, не влияя на воспроизводимое воспроизведение?

1 Ответ

2 голосов
/ 17 марта 2010

Я не думаю, что есть какое-то отличное решение этой проблемы, я столкнулся с той же проблемой с буферизацией, реализующей перетаскивание, так как элементы управления должны были быть временно удалены, а затем повторно добавлены в новом месте в визуальном дереве, вызывая MediaElement для буферизации.

В случае, если у кого-то еще есть эта проблема, мой лучший обходной путь - использовать VideoBrush на реальных элементах управления со всеми соответствующими MediaElements, добавляемыми в скрытую панель на уровне приложения. Если элемент управления временно покидает визуальное дерево (из-за виртуализации пользовательского интерфейса или перетаскивания), удаляется только VideoBrush, а фактический MediaElement остается на скрытой панели, поэтому повторная буферизация не происходит.

...