2009-10-08 3 views
1

각기 고유 한 MediaElement 재생 비디오가있는 여러 컨트롤이 패널에 포함되어있는 응용 프로그램이 있습니다. 저는 작은 뷰 포트에서 많은 컨트롤을 스크롤 할 때 성능을 향상시키기 위해 Silverlight 3의 새로운 UI 가상화 기능을 조사했습니다.Silverlight MediaElement 및 UI 가상화

내 경험에 비추어 볼 때 MediaElement 컨트롤이 제거 된 다음 시각적 트리에 다시 추가 될 때마다 미디어가 다시 버퍼해야한다는 것을 알고 있습니다. MediaElement 컨트롤로 채워진 모든 종류의 사용자 지정 패널에서 UI 가상화를 구현하려고하면 화면에 스크롤되는 즉시 재생하기 전에 오프 스크린 요소가 재생을 멈추고 다시 버퍼가 재생됩니다. 이 상황에 대한 경험이있는 사람이 있습니까?

이 경우 진행중인 재생에 영향을 미치지 않고 MediaElements가 포함 된 컨트롤로 UI 가상화를 구현할 수있는 임시 해결 방법이나 가능한 방법이 있습니까?

답변

2

이 문제에 대한 훌륭한 해결책이 없다고 생각합니다. 컨트롤을 일시적으로 제거한 다음 시각적 트리의 새 지점에 다시 추가해야하기 때문에 드래그 앤 드롭을 구현하는 동일한 재 버퍼링 문제에 직면했습니다. MediaElement를 다시 버퍼링합니다.

다른 누구에게이 문제가있는 경우, 가장 좋은 해결책은 실제 컨트롤에서 VideoBrush를 사용하여 해당 MediaElements를 응용 프로그램 수준의 숨겨진 패널에 추가하는 것입니다. 컨트롤이 일시적으로 시각적 트리를 벗어나는 경우 (UI 가상화 또는 끌어서 놓기로 인해) VideoBrush 만 제거되고 실제 MediaElement는 숨겨진 패널에 그대로 있으므로 재 버퍼링이 발생하지 않습니다.