2010-02-08 2 views
3

WMP 유형 앱을 제작하여 C# 및 WPF를 배우고 있습니다. 아래의 코드는 잘 실행되어 목록 상자에서 동영상을 선택하면 미디어 요소에서 동영상이 실행됩니다. 내가 가지고있는 문제는 영화가 끝난 후 자동으로 다음 영화를 시작하는 방법을 찾는 것입니다. 고맙습니다.WPF MediaElement 용 재생 목록

영화의 목록을 제공하는 XML 파일 :

<?xml version="1.0" encoding="ISO-8859-1"?> 

곰 C를 : Butterfly.wmv 호수 \ \ 영화 : Bear.wmv \ \ 영화 나비 C c : \ movies \ Lake.wmv

XAML

<Window x:Class="WpfAppPlaylistTest.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="300" Width="425"> 

<Window.Resources> 
    <XmlDataProvider x:Key="myMoviesXML" 

         Source="c:\Movies\media1.xml" 
         XPath="media" 
     /> 
</Window.Resources> 

<Grid DataContext="{Binding ElementName=movieList, Path=SelectedItem}"> 
    <ListBox ItemsSource="{Binding Source={StaticResource myMoviesXML}, XPath=//media//movie}" IsSynchronizedWithCurrentItem="True" 
    Name="movieList" HorizontalAlignment="Right" Width="114" Margin="0,48,12,32"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding XPath=title}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    <MediaElement Source="{Binding XPath=filename}" LoadedBehavior="Play" Name="mediaElement1" Margin="12,26,136,12" /> 
</Grid> 

답변

1

MediaElement에이 문제가 발생하면 화재해야 MediaEnded 이벤트가 있습니다. 그런 다음 목록에서 다음 항목을 프로그래밍 방식으로 선택하고 해당 파일을 재생할 수 있습니다.

+0

감사합니다. Brian, 저는 현재 MediaEnded를 사용하여 타이머를 멈추고 있지만 다음 영화로 이동하는 방법을 모르겠습니다. 나는 IEnumerable 또는 Observablecollection 또는 xmlserializer와 함께 어떤 종류의 루프를 생각하고 있습니다. 나는 어느 것이 최상인지 또는 어쩌면 하나가 막 다른 골목인지는 모른다. 조언 및/또는 샘플 코드는 크게 감사하겠습니다. –

+0

헤이, 미디어 엔드 이벤트가 발생하면 프로그래밍 방식으로 목록 상자에서 다음 항목을 선택할 수 없습니까? 목록 상자에서 선택한 값을 미디어 요소에 매핑합니까? 그래서 선택한 인덱스를 변경하면 listbox chang 이벤트가 발생합니다. 목록 이벤트는 선택한 값을 기반으로 미디어를 변경하는 데 사용할 수 있습니다 ... 어떻게 설정 했습니까? –

+0

예, 선택된 목록 상자 값이 미디어 요소의 소스이며 클릭으로 제대로 실행됩니다. 이 "클릭"을 자동화하기 위해 XML 파일의 인덱스를 지정하여 재생중인 트랙을 추적 할 필요가 있다고 생각합니다. 이렇게하는 방법은 제가 현재 연구하고있는 것입니다. –