2010-06-07 3 views
0

Я также разместил это на форумах MSDN - я надеюсь, что это не проблема.Создание простого поискового медиаплеера с MediaElement в WPF

Я в основном пытаюсь создать проигрыватель на основе WPF, который позволяет вам искать в медиа. Я пытаюсь реализовать его с помощью MediaTimeline (я знаю, что могу изменить свойство Position, но у меня были другие проблемы, которые я опубликую в отдельном вопросе). Ниже приведены XAML и код.

Спасибо для смотреть ...

MainWindow.xaml

<Window x:Class="WpfApplication5.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" SizeToContent="WidthAndHeight"> 
    <Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <MediaElement x:Name="mediaElement" Width="320" Height="240" Margin="4" LoadedBehavior="Manual"/> 
    <Slider x:Name="slider" Grid.Row="1" Margin="4"/> 
    </Grid> 
</Window> 

MainWindow.xaml.cs

using System; 
using System.Windows; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 

namespace WpfApplication5 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      var tl = new MediaTimeline(new Uri(@"c:\temp\!numa.wmv")); 

      mediaElement.Clock = tl.CreateClock(true) as MediaClock; 


      mediaElement.MediaOpened += (o, e) => 
      { 
       slider.Maximum = mediaElement.NaturalDuration.TimeSpan.Seconds; 
       mediaElement.Clock.Controller.Pause(); 
      }; 

      slider.ValueChanged += (o, e) => 
      { 
       mediaElement.Clock.Controller.Seek(TimeSpan.FromSeconds(slider.Value), TimeSeekOrigin.BeginTime); 
      }; 

     } 
    } 
} 
+1

В чем вопрос? –

+0

Hi Thomas, Не работает - перемещение слайдера не ищет видео. спасибо --oleg –

ответ

2

Вам нужно установить ScrubbingEnabled = "True" на MediaElement, чтобы он обновлять во время поиска.

0

Событие MediaOpened должно фактически устанавливать максимальное значение в .TotalSeconds, и вы также должны установить ScrubbingEnabled в значение True, как указано jesperll.