MediaElement가 있는데 어떻게 MediaElement의 "위치"속성을 변경할 때 함수를 호출 할 수 있습니까?WPF mediaelement
위치는 DependencyProperty가 아닙니다.
MediaElement가 있는데 어떻게 MediaElement의 "위치"속성을 변경할 때 함수를 호출 할 수 있습니까?WPF mediaelement
위치는 DependencyProperty가 아닙니다.
그래서 난 그냥 비디오 재생을 다음과 슬라이더를 구현하려는 ...하지만 위치 속성은 종속성 속성되지 않습니다 :의
당신은 DispatchTimer를 사용할 수 있습니다. 이 기사는이 작업을 수행하는 방법에 대한 좋은 통찰력을 제공합니다. MediaElement and More with WPF.
다음은 내가 작업중인 프로젝트에서 가져온 샘플 코드입니다. 슬라이더 컨트롤을 사용하여 비디오의 위치를 표시하고 사용자가 위치를 변경할 수 있습니다.
나는 약간의 초보자이기도하므로, 그 중 일부가 잘못되었을 수도 있습니다 (의견 섹션의 문제에 자유롭게 의견을 말하십시오 :).
private DispatcherTimer mTimer;
private bool mIsDragging = false;
private bool mTick = false;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
medPlayer.Play();
medPlayer.Stop();
mTimer = new DispatcherTimer();
mTimer.Interval = TimeSpan.FromMilliseconds(100);
mTimer.Tick += new EventHandler(mTimer_Tick);
mTimer.Start();
}
void mTimer_Tick(object sender, EventArgs e)
{
if (!mIsDragging)
{
try
{
mTick = true;
sldPosition.Value = medPlayer.Position.TotalMilliseconds;
}
finally
{
mTick = false;
}
}
}
private void sldPosition_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
mIsDragging = true;
medPlayer.Pause();
}
private void sldPosition_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
mIsDragging = false;
if (chkPlay.IsChecked.Value)
medPlayer.Play();
}
private void sldPosition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
var pos = TimeSpan.FromMilliseconds(e.NewValue);
lblPosition.Content = string.Format("{0:00}:{1:00}", pos.Minutes, pos.Seconds);
if (!mTick)
{
medPlayer.Position = TimeSpan.FromMilliseconds(sldPosition.Value);
if (medPlayer.Position == medPlayer.NaturalDuration.TimeSpan)
{
chkPlay.IsChecked = false;
medPlayer.Stop();
}
}
}
FFME은 위치 (및 대부분의 다른 미디어 속성)를 종속성 속성으로 만듭니다. 시도 해봐.
좋은 시작을 http://stackoverflow.com/questions/869761/wpf-implementing-a-mediaplayer-audio-video-seeker 참조 – kenwarner