2014-06-08 5 views
0

WPF에서 뮤직 플레이어를 만들고 있는데, 현재 재생중인 트랙의 트랙바를 추가 할 것이고 디스패처 타이머를 사용하여 왼쪽에 실행 시간을 추가 할 것입니다. 트랙 바의트랙볼을 사용한 컨트롤 타임

0:45 ---------- | ---------------------------- 3 : 13

사용자가 왼쪽 또는 오른쪽으로 드래그하여 트랙 바를 드래그하는 시간에 따라 왼쪽의 시간을 변경하고 싶습니다.

iTunes를 확인하십시오.

아무도 도와 줄 수 있습니까? 감사!

답변

0

MediaPlayer 요소를 사용한다고 가정하면 MediaPlayer.Position 속성을 사용하여 현재 재생 위치를 알릴 수 있습니다. 현재 재생 위치를 표시하는 UI 요소에 바인딩 된 데이터 인 속성을 계속 업데이트하려면 DispatcherTimer을 사용해야합니다. 이 작업을 수행하려면 Slider.Maximum 속성을 올바른 값으로 설정해야합니다. 뒤에 코드에서

: 여기에 기본 예제입니다

XAML에서
private void InitialiseMediaPlayer() 
{ 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.MediaOpened += MediaPlayer_MediaOpened; 
    mediaPlayer.Open(new Uri(SomeFilePath, UriKind.Absolute)); 
} 

private void MediaPlayer_MediaOpened(object sender, EventArgs e) 
{ 
    if (mediaPlayer.NaturalDuration.HasTimeSpan) 
    { 
     SliderMaximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds; 
     mediaPlayerTimer = new DispatcherTimer(); 
     mediaPlayerTimer.Interval = TimeSpan.FromMilliseconds(1000); 
     mediaPlayerTimer.Tick += MediaPlayerTimer_Tick; 
     mediaPlayerTimer.Start(); 
     mediaPlayer.Play(); 
    } 
} 

private void MediaPlayerTimer_Tick(object sender, EventArgs e) 
{ 
    Position = mediaPlayer.Position.TotalSeconds; 
    Time = mediaPlayer.Position; 
} 

:

<Slider Grid.Column="1" Value="{Binding Position, FallbackValue=0}" Maximum="{Binding 
    SliderMaximum, FallbackValue=0, Mode=OneWay}" Minimum="0" Margin="5,0" 
    VerticalAlignment="Center" /> 
<TextBlock Grid.Column="2" Text="{Binding Time, StringFormat={}{0:hh}:{0:mm}:{0:ss}, 
    FallbackValue=00:00:00, Mode=OneWay}" VerticalAlignment="Center" /> 

enter image description here

당신은 또한 Position 속성 setter에 다음 줄을 추가해야 할 수 있습니다 :

mediaPlayer.Position = TimeSpan.FromSeconds(position); 
+0

iTunes로이 작업을 도와 줄 수 있습니까? –