Play a Media File : MediaElement « Windows Presentation Foundation « C# / CSharp Tutorial

Home
C# / CSharp Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statement
5.String
6.struct
7.Class
8.Operator Overload
9.delegate
10.Attribute
11.Data Structure
12.Assembly
13.Date Time
14.Development
15.File Directory Stream
16.Preprocessing Directives
17.Regular Expression
18.Generic
19.Reflection
20.Thread
21.I18N Internationalization
22.LINQ
23.GUI Windows Forms
24.Windows Presentation Foundation
25.Windows Communication Foundation
26.Workflow
27.2D
28.Design Patterns
29.Windows
30.XML
31.XML LINQ
32.ADO.Net
33.Network
34.Directory Services
35.Security
36.unsafe
C# / C Sharp
C# / C Sharp by API
C# / CSharp Open Source
C# / CSharp Tutorial » Windows Presentation Foundation » MediaElement 
24.162.7.Play a Media File
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF" Height="450" Width="300">
    <StackPanel x:Name="Panel">
        <StackPanel.Triggers>
            <EventTrigger RoutedEvent="Button.Click" SourceName="btnPlay">
                <EventTrigger.Actions>
                    <BeginStoryboard Name="ClockStoryboard">
                        <Storyboard x:Name="Storyboard"  SlipBehavior="Slip"
                                    CurrentTimeInvalidated="Storyboard_Changed">
                            <MediaTimeline BeginTime="0" Source="c:\a.avi" 
                                 Storyboard.TargetName="meMediaElement"
                                 RepeatBehavior="Forever" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="btnPause">
                <EventTrigger.Actions>
                    <PauseStoryboard BeginStoryboardName="ClockStoryboard" />
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="btnResume">
                <EventTrigger.Actions>
                    <ResumeStoryboard BeginStoryboardName="ClockStoryboard" />
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="btnStop">
                <EventTrigger.Actions>
                    <StopStoryboard BeginStoryboardName="ClockStoryboard" />
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Slider.PreviewMouseLeftButtonDown" 
                              SourceName="sldPosition" >
                <PauseStoryboard BeginStoryboardName="ClockStoryboard" />
            </EventTrigger>
            <EventTrigger RoutedEvent="Slider.PreviewMouseLeftButtonUp" 
                              SourceName="sldPosition" >
                <ResumeStoryboard BeginStoryboardName="ClockStoryboard" />
            </EventTrigger>
        </StackPanel.Triggers>

        <MediaElement Name="meMediaElement" HorizontalAlignment="Center"
                      Margin="5" MinHeight="300" Stretch="Fill"
                      MediaOpened="MediaOpened" />
        <Button Content="_Play" Name="btnPlay" />
        <Button Content="P_ause" Name="btnPause" />
        <Button Content="_Resume" Name="btnResume" />
        <Button Content="_Stop" Name="btnStop" />
        <Slider HorizontalAlignment="Center" Margin="5" 
                Name="sldPosition" Width="250"
                ValueChanged="sldPosition_ValueChanged">
        </Slider>
        <TextBlock Text="Volume:"/>
        <Slider Minimum="0" Maximum="1" TickFrequency="0.1" TickPlacement="TopLeft" Value="{Binding ElementName=meMediaElement, Path=Volume, Mode=TwoWay}" />
        <TextBlock Text="Balance:"/>
        <Slider Minimum="-1" Maximum="1" TickFrequency="0.2" TickPlacement="TopLeft" Value="{Binding ElementName=meMediaElement, Path=Balance, Mode=TwoWay}" />
    </StackPanel>
</Window>
//File:Window.xaml.cs

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

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        bool ignoreValueChanged = false;

        public Window1()
        {
            InitializeComponent();
        }
        private void MediaOpened(object sender, EventArgs e)
        {
            sldPosition.Maximum = meMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
        }
        private void Storyboard_Changed(object sender, EventArgs e)
        {
            ClockGroup clockGroup = sender as ClockGroup;
            MediaClock mediaClock = clockGroup.Children[0as MediaClock;
            if (mediaClock.CurrentProgress.HasValue){
                ignoreValueChanged = true;
                sldPosition.Value = meMediaElement.Position.TotalMilliseconds;
                ignoreValueChanged = false;
            }
        }
        private void sldPosition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){
            if (ignoreValueChanged)
            {
                return;
            }
            Storyboard.Seek(Panel,TimeSpan.FromMilliseconds(sldPosition.Value),TimeSeekOrigin.BeginTime);
        }
    }
}
WPF Play A Media File
24.162.MediaElement
24.162.1.Using MediaElement for AudioUsing MediaElement for Audio
24.162.2.Overlapping Videos with EffectsOverlapping Videos with Effects
24.162.3.Simple Media PlayerSimple Media Player
24.162.4.Play mp3 filePlay mp3 file
24.162.5.Play wav filePlay wav file
24.162.6.Declarative PlaybackDeclarative Playback
24.162.7.Play a Media FilePlay a Media File
24.162.8.Sound And Video Playback in CodeSound And Video Playback in Code
24.162.9.Play with MediaPlayerPlay with MediaPlayer
24.162.10.Play Audio AsynchronouslyPlay Audio Asynchronously
24.162.11.Play System SoundsPlay System Sounds
24.162.12.Multiple SoundsMultiple Sounds
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.