요구 사항에 대한 의견이 있으시면 일반 MediaElement를 사용 하시겠지만 제안하려는 부분 만 포함하고 해상도는 줄인 "미리보기"버전의 비디오를 할당하는 것이 좋습니다. 적재량을 줄이십시오.
따라서 모델에는 PreviewUri와 SourceUri라는 두 가지 속성이 있습니다. PreviewUri에서 비디오의 "미리보기"버전을 저장합니다. SourceUri에서 "전체"버전을 저장합니다. ListBox 또는 ItemsControl에서 PreviewUri에 바인딩 된 MediaElements를 사용합니다. 사용자가 선택하면 기본 MediaElement의 Source를 SourceUri로 설정합니다.
이
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<MediaElement Source="{Binding PreviewUri}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
모델은 다음과 같이 보일 것입니다 : 그래서 당신의리스트 박스는 다음과 같이 보일 것입니다
public class Video // ideally implement INotifyPropertyChanged - not shown
{
public Uri PreviewUri { get; set; }
public Uri SourceUri { get; set; }
public static ObservableCollection<Video> LoadVideoInfo()
{
/* pseudocode
new up a collection
foreach (file in videoFolder)
collection.Add(new Video { PreviewUri = smallFileUri, SourceUri = bigFileUri });
return collection;
*/
}
}
및 코드 뒤에 같은 것을 볼 것이다 :
DataContext = Video.LoadVideoInfo();
방법을 전체 크기의 비디오를 표시하려면이 옵션을 실행하려는 대상과 전체 크기의 비디오가 표시되는 위치에 따라 달라집니다. ListBox를 반복하지 않고 StackPanel에 자식을 추가하는 것은 SelectedItemChanged 이벤트를 사용하거나 SelectedItem에 데이터 바인딩을 사용하거나 IsSynchronizedWithCurrentItem 속성을 사용할 수 있기 때문에이 작업에 도움이 될 수 있습니다.
미리보기 비디오를 다운로드 할 무언가를 만들려고하고 있습니까? 예를 들어 다음과 같은 일정을 처리 할 수 있습니까? 창을 지우고 전체 비디오를 다운로드하고 재생할 수 있습니까? 또는 전체 비디오를 다운로드하지만 처음에는 조각 만 재생할 수 있습니다 (그러나 전체 비디오를 재생하는 방법이 있습니까)? 아니면 중간 행동? 원하는 것을 얻기 위해 다양한 방법이있을 수 있지만 사용자 정의 요소의 작동 방식에 따라 달라집니다. – itowlson
지금 내가하고있는 일은 비디오 폴더를 반복하면서 미디어 요소를 scrollviewer의 측면에있는 스택 패널에 추가하는 것입니다. 따라서 약 5 ~ 20 개의 vids가있을 수 있으므로 키오스크 앱을 제작하려고하므로 동영상 수가 다를 수 있습니다. 나의 초기 생각은 15secs-1 분 사이의 비디오 재생을 반복하는 것입니다. 이 방법은 사용자가 비디오가 아니라 그림을 알 수 있습니다. (저는 그것에 대한 별도의 스크롤 뷰어가 있습니다). 하드웨어가 달라지기 때문에이 프로그램에서 소비 할 리소스를 줄이려고합니다. 동영상을 찍으려고하는 것은 갈 길이 멀지 않을 수도 있습니다. Idk, 아마도 더 나은 스레딩입니까? – nagates