Silverlight MediaElement и виртуализация пользовательского интерфейса

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

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

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

вопрос задан 8.10.2009
Dan Auclair
3269 репутация

1 ответов


  • 2 рейтинг

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

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

    ответ дан Dan Auclair, с репутацией 3269, 17.03.2010