{"action":"opened","issue":{"url":"https://api.github.com/repos/XLabs/Xamarin-Forms-Labs/issues/733","labels_url":"https://api.github.com/repos/XLabs/Xamarin-Forms-Labs/issues/733/labels{/name}","comments_url":"https://api.github.com/repos/XLabs/Xamarin-Forms-Labs/issues/733/comments","events_url":"https://api.github.com/repos/XLabs/Xamarin-Forms-Labs/issues/733/events","html_url":"https://github.com/XLabs/Xamarin-Forms-Labs/issues/733","id":63671103,"number":733,"title":"WaveRecorder Issue","user":{"login":"harold-hernandez30","id":11609949,"avatar_url":"https://avatars.githubusercontent.com/u/11609949?v=3","gravatar_id":"","url":"https://api.github.com/users/harold-hernandez30","html_url":"https://github.com/harold-hernandez30","followers_url":"https://api.github.com/users/harold-hernandez30/followers","following_url":"https://api.github.com/users/harold-hernandez30/following{/other_user}","gists_url":"https://api.github.com/users/harold-hernandez30/gists{/gist_id}","starred_url":"https://api.github.com/users/harold-hernandez30/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/harold-hernandez30/subscriptions","organizations_url":"https://api.github.com/users/harold-hernandez30/orgs","repos_url":"https://api.github.com/users/harold-hernandez30/repos","events_url":"https://api.github.com/users/harold-hernandez30/events{/privacy}","received_events_url":"https://api.github.com/users/harold-hernandez30/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-03-23T09:08:34Z","updated_at":"2015-03-23T09:08:34Z","closed_at":null,"body":"Hi, I'm having a problem with the WaveRecorder buttons not updating their UI when I do the:\r\n\r\nRecord.ChangeCanExecute();\r\nStop.ChangeCanExecute();\r\n\r\nWhich was copied from the XLabs source. Basically it records, and I can see it in the logs that it's recording. But the buttons are not updated its enabled or disabled states. \r\n\r\nMy code follows that of the one from the WaveRecorderViewModel with some minor changes (but even with the unedited, the button states still have issues):\r\n\r\n   public bool IsRecording\r\n        {\r\n            get { return _isRecording; }\r\n            set {\r\n\r\n\r\n                SetProperty(ref _isRecording, value);\r\n\r\n                Record.ChangeCanExecute();\r\n                Stop.ChangeCanExecute();\r\n            }\r\n        }\r\n\r\nAnd, for the Stop and Start Command:\r\n\r\n  Record = new Command(\r\n               () =>\r\n                {\r\n\r\n                    //https://forums.xamarin.com/discussion/26078/using-a-canexecute-func-on-a-relaycommand-never-re-enables-a-button-is-this-a-fault-with-forms\r\n                    _audioStream.OnBroadcast += audioStream_OnBroadcast;\r\n                    //this.audioStream.Start.Execute(this.SampleRate);\r\n                    _recorder.StartRecorder(\r\n                        _audioStream,\r\n                        device.FileManager.OpenFile(FileName, XLabs.Platform.Services.IO.FileMode.Create, XLabs.Platform.Services.IO.FileAccess.Write),\r\n                        SampleRate).ContinueWith(t =>\r\n                        {\r\n                            if (t.IsCompleted)\r\n                            {\r\n                                System.Diagnostics.Debug.WriteLine(\"Microphone recorder {0}.\", IsRecording ? \"was started\" : \"failed to start.\");\r\n\r\n                            }\r\n                            else if (t.IsFaulted)\r\n                            {\r\n                                _audioStream.OnBroadcast -= audioStream_OnBroadcast;\r\n                            }\r\n                        });\r\n                },\r\n                () =>\r\n                {\r\n                    return\r\n                        (RecordingEnabled &&\r\n                        _audioStream.SupportedSampleRates.Contains(SampleRate) &&\r\n                        !IsRecording &&\r\n                        device.FileManager != null);\r\n                }\r\n                );\r\n\r\n            Stop = new Command(\r\n                async () =>\r\n                {\r\n                    _audioStream.OnBroadcast -= audioStream_OnBroadcast;\r\n                    await _recorder.StopRecorder();\r\n                    //this.audioStream.Stop.Execute(this);\r\n                    System.Diagnostics.Debug.WriteLine(\"Microphone recorder was stopped.\");\r\n                    IsRecording = false;\r\n                },\r\n                () =>\r\n                {\r\n                    return IsRecording;\r\n                }\r\n                );"}}