protected override object CreateDisplayControl()
        {
            mediaElement = new MediaElement();

            mediaElement.CurrentStateChanged += mediaElement_CurrentStateChanged;
            mediaElement.BufferingProgressChanged += new RoutedEventHandler(mediaElement_BufferingProgressChanged);
            mediaElement.DownloadProgressChanged += new RoutedEventHandler(mediaElement_DownloadProgressChanged);
            mediaElement.MediaOpened += OnMediaOpened;
            mediaElement.MediaEnded += OnMediaEnded;
            mediaElement.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(mediaElement_MediaFailed);

            if (SourceBinding != null)
                mediaElement.SetBinding(MediaElement.SourceProperty, SourceBinding);

            mediaElement.SetBinding(MediaElement.IsMutedProperty, new System.Windows.Data.Binding("Controller.IsMuted") { Source = this });
            mediaElement.SetBinding(MediaElement.VolumeProperty, new System.Windows.Data.Binding("Controller.Volume") { Source = this });
            mediaElement.SetBinding(MediaElement.AutoPlayProperty, new System.Windows.Data.Binding("Controller.AutoPlay") { Source = this });

            mediaElement.SetBinding(MediaElement.AudioStreamIndexProperty, new System.Windows.Data.Binding("AudioStreamIndex") { Source = this });
            OnDisplayControlCreated();

            return mediaElement;
        }