2011-03-21 9 views
1

오디오 파일의 재생이 완료된 것을 나타 내기 위해 Storyboard의 Completed 이벤트를 사용하려고합니다. 그러나 .Net은 mp3 및 wav 파일을 재생할 때 다르게 작동하며, 이벤트는 WAV에 대해서만 트리거됩니다. 누군가가 그 이유와 방법을 극복하는 방법에 대한 아이디어가있는 경우MP3가 Storyboard.Completed 이벤트를 트리거하지 않습니다

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" 
    x:Name="mainWind"> 
<Window.Resources> 
    <Storyboard x:Key="mp3StoryBoard" Completed="Storyboard_Completed"> 
     <MediaTimeline Source="001.mp3" Storyboard.TargetName="mediaEl" > 

     </MediaTimeline> 
    </Storyboard> 
    <Storyboard x:Key="wavStoryBoard" Completed="Storyboard_Completed"> 
     <MediaTimeline Source="001.wav" Storyboard.TargetName="mediaEl" > 

     </MediaTimeline> 
    </Storyboard> 
</Window.Resources> 
<Grid> 
    <MediaElement x:Name="mediaEl" Height="120" HorizontalAlignment="Left" Margin="120,94,0,0" VerticalAlignment="Top" Width="160" /> 
    <Button Content="Play MP3" Height="23" HorizontalAlignment="Left" Margin="148,260,0,0" Name="btnMP3" VerticalAlignment="Top" Width="75" Click="button1_Click" /> 
    <Button Content="Play WAV" Height="23" HorizontalAlignment="Left" Margin="267,260,0,0" Name="btnWAV" VerticalAlignment="Top" Width="75" Click="btnWAV_Click" /> 
</Grid> 
</Window> 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Media.Animation; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace WpfApplication1 
{ 
/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     Storyboard sb = (Storyboard)this.mainWind.Resources["mp3StoryBoard"]; 
     sb.Begin(); 

    } 

    private void Storyboard_Completed(object sender, EventArgs e) 
    { 
     MessageBox.Show(" Storyboard finished"); 
    } 


    private void btnWAV_Click(object sender, RoutedEventArgs e) 
    { 
     Storyboard sb = (Storyboard)this.mainWind.Resources["wavStoryBoard"]; 
     sb.Begin(); 
    } 
} 

}

기뻐 것 : 여기

문제를 설명하는 XAML과 코드입니다.

답변

0

WPF MediaKit에는 Media Element 대체가 포함되어 있으며 mp3 파일에서 더 잘 작동 할 수 있습니다.

2

첨부 된 이벤트 처리기가 없습니다.

당신은

sb.Completed +=Storyboard_Completed; 

전에

필요
관련 문제