This project has moved and is read-only. For the latest updates, please go here.

INotifyPropertyChanged implementation in NAudio

Dec 26, 2009 at 9:48 PM
Edited Dec 27, 2009 at 4:24 AM


First of all, I wish to tell, that NAudio is very useful library. It simplifies an application programming and gives possibilities, sufficient for the majority of tasks. Now this library helps me with my work on the diploma.

In the diploma I use NAudio library in a combination with WPF. As is known, force in WPF consists in possibility to use bindings to data everywhere . But, working with NAudio, I could use this advantage not everywhere. For example, I would like that the Maximum property of the System.Windows.Controls.Slider control has the binds with TotalTime property of NAudio.Wave.WaveStream class and Slider.Value property has the binds with WaveStream.CurrentTime property... As I know, it is necessary that class has a INotifyPropertyChanged interface implementation for correctly work of bindings (correct me if I am mistaken). But in a NAudio source code I have not seen any implementation of this interface.

Questions: NAudio have not the INotifyPropertyChanged interface implementation specially? Probably it will be made in future NAudio versions? How to realise rewind of audio file with current version of NAudio library on WPF?


Origin text for russian visitors =)


Прежде всего, хочу сказать, что NAudio очень полезная библиотека. Она упрощает разработку приложения и предоставляет возможности, достаточные для большинства задач. В настоящее время, данная библиотека помогает мне в моей работе над дипломом.

В своем дипломе я использую библиотеку NAudio  в сочетании с WPF. Как известно, сила в WPF заключается в возможности повсеместно использовать привязки к данным. Но, при работе с NAudio, не везде я смог этим воспользоваться. Например, я хотел бы, что бы у элемента System.Windows.Controls.Slider свойство Maximum имело привязку со свойством TotalTime класса NAudio.Wave.WaveStream, а свойство Slider.Value было связано со свойством WaveStream.CurrentTime... На сколько мне известно, что бы такие связки правильно работали, как минимум необходима реализация интерфейса INotifyPropertyChanged (поправьте меня, если я ошибаюсь). Но в исходном коде я не увидел никакой реализации данного интерфейса.

Вопрос: Специально ли не реализован интерфейс INotifyPropertyChanged? Возможно это будет сделано в будущих версиях NAudio? Как реализовать перемотку аудио файла с помощью данной версии библиотеки NAudio в WPF?

Jan 4, 2010 at 3:59 PM

hi there

the reason there is not INotifyPropertyChanged on CurrentTime is because of performance issues. It changes very rapidly. It is better to poll at regular intervals. The good news is you can abstract this away using a ViewModel that does implement INotifyPropertyChanged, which underneath polls the WaveStream.

hope this helps