diff --git a/Correlator/ViewModels/AudioFileViewModel.cs b/Correlator/ViewModels/AudioFileViewModel.cs index bd5345e..375443e 100644 --- a/Correlator/ViewModels/AudioFileViewModel.cs +++ b/Correlator/ViewModels/AudioFileViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Windows; using System.Windows.Controls; using Correlator.Util; using HandyControl.Controls; @@ -11,6 +12,7 @@ using Prism.Mvvm; using Prism.Services.Dialogs; using FileInfo = Correlator.Model.FileInfo; +using MessageBox = HandyControl.Controls.MessageBox; namespace Correlator.ViewModels { @@ -73,7 +75,7 @@ private FileInfo _selectedFile; private WaveOutEvent _waveOutEvent = new WaveOutEvent(); private AudioFileReader _audioFileReader; - + public AudioFileViewModel() { GoBackCommand = new DelegateCommand(delegate @@ -89,6 +91,7 @@ _waveOutEvent.Dispose(); _waveOutEvent = null; } + RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); @@ -105,12 +108,19 @@ } else { - _audioFileReader = new AudioFileReader(fullPath); - _waveOutEvent.Init(_audioFileReader); - _waveOutEvent.Play(); + try + { + _audioFileReader = new AudioFileReader(fullPath); + _waveOutEvent.Init(_audioFileReader); + _waveOutEvent.Play(); + } + catch (FormatException) + { + MessageBox.Show("音频文件损坏,无法播放", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error); + } } }); - + DeleteItemCommand = new DelegateCommand(() => { File.Delete(_selectedFile.FullPath); diff --git a/Correlator/ViewModels/AudioFileViewModel.cs b/Correlator/ViewModels/AudioFileViewModel.cs index bd5345e..375443e 100644 --- a/Correlator/ViewModels/AudioFileViewModel.cs +++ b/Correlator/ViewModels/AudioFileViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Windows; using System.Windows.Controls; using Correlator.Util; using HandyControl.Controls; @@ -11,6 +12,7 @@ using Prism.Mvvm; using Prism.Services.Dialogs; using FileInfo = Correlator.Model.FileInfo; +using MessageBox = HandyControl.Controls.MessageBox; namespace Correlator.ViewModels { @@ -73,7 +75,7 @@ private FileInfo _selectedFile; private WaveOutEvent _waveOutEvent = new WaveOutEvent(); private AudioFileReader _audioFileReader; - + public AudioFileViewModel() { GoBackCommand = new DelegateCommand(delegate @@ -89,6 +91,7 @@ _waveOutEvent.Dispose(); _waveOutEvent = null; } + RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); @@ -105,12 +108,19 @@ } else { - _audioFileReader = new AudioFileReader(fullPath); - _waveOutEvent.Init(_audioFileReader); - _waveOutEvent.Play(); + try + { + _audioFileReader = new AudioFileReader(fullPath); + _waveOutEvent.Init(_audioFileReader); + _waveOutEvent.Play(); + } + catch (FormatException) + { + MessageBox.Show("音频文件损坏,无法播放", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error); + } } }); - + DeleteItemCommand = new DelegateCommand(() => { File.Delete(_selectedFile.FullPath); diff --git a/Correlator/Views/AudioFileView.xaml b/Correlator/Views/AudioFileView.xaml index 324c2ae..0010697 100644 --- a/Correlator/Views/AudioFileView.xaml +++ b/Correlator/Views/AudioFileView.xaml @@ -114,6 +114,12 @@ Command="{Binding DataContext.PlayAudioCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding FullPath}" Style="{x:Null}"> + + +