/// <summary>
        /// Constructs a new remote control window
        /// </summary>
        /// <param name="sourceDevice">source device object</param>
        public RemoteControlWindow(SourceDevice sourceDevice)
        {
            RemoteReleaseControl control = sourceDevice.EnterReleaseControl();

            this.ViewModel   = new RemoteControlViewModel(sourceDevice, control);
            this.DataContext = this.ViewModel;

            this.InitializeComponent();
        }
        /// <summary>
        /// Creates a new view model for the remote control view
        /// </summary>
        /// <param name="device">source device object</param>
        /// <param name="control">remote release control object</param>
        public RemoteControlViewModel(SourceDevice device, RemoteReleaseControl control)
        {
            this.device  = device;
            this.control = control;

            this.SetupBindings();

            this.control.PropertyChanged += this.OnPropertyChanged;
            this.control.StateChanged    += this.OnStateChanged;
            this.control.DownloadChanged += this.OnDownloadChanged;
        }