From c442ae944d5c2f140b73fb9e1a6895c4cd4d8170 Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Tue, 29 Mar 2022 10:43:26 -0700 Subject: [PATCH 1/3] Ensure GroupValueChangedMessage is received --- src/Controls/src/Core/RadioButton.cs | 8 ++++---- src/Controls/src/Core/RadioButtonGroupController.cs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Controls/src/Core/RadioButton.cs b/src/Controls/src/Core/RadioButton.cs index 043fd4dbeb96..a6804539849a 100644 --- a/src/Controls/src/Core/RadioButton.cs +++ b/src/Controls/src/Core/RadioButton.cs @@ -438,7 +438,7 @@ void OnGroupNamePropertyChanged(string oldGroupName, string newGroupName) { MessagingCenter.Subscribe(this, RadioButtonGroup.GroupSelectionChangedMessage, HandleRadioButtonGroupSelectionChanged); - MessagingCenter.Subscribe(this, + MessagingCenter.Subscribe(this, RadioButtonGroup.GroupValueChangedMessage, HandleRadioButtonGroupValueChanged); } @@ -450,7 +450,7 @@ void OnGroupNamePropertyChanged(string oldGroupName, string newGroupName) if (!string.IsNullOrEmpty(oldGroupName)) { MessagingCenter.Unsubscribe(this, RadioButtonGroup.GroupSelectionChangedMessage); - MessagingCenter.Unsubscribe(this, RadioButtonGroup.GroupValueChangedMessage); + MessagingCenter.Unsubscribe(this, RadioButtonGroup.GroupValueChangedMessage); } } } @@ -470,9 +470,9 @@ void HandleRadioButtonGroupSelectionChanged(RadioButton selected, RadioButtonGro IsChecked = false; } - void HandleRadioButtonGroupValueChanged(Maui.ILayout layout, RadioButtonGroupValueChanged args) + void HandleRadioButtonGroupValueChanged(Element layout, RadioButtonGroupValueChanged args) { - if (IsChecked || string.IsNullOrEmpty(GroupName) || GroupName != args.GroupName || Value != args.Value || !MatchesScope(args)) + if (IsChecked || string.IsNullOrEmpty(GroupName) || GroupName != args.GroupName || !Value.Equals(args.Value) || !MatchesScope(args)) { return; } diff --git a/src/Controls/src/Core/RadioButtonGroupController.cs b/src/Controls/src/Core/RadioButtonGroupController.cs index 6de4fc5b774e..36200c990059 100644 --- a/src/Controls/src/Core/RadioButtonGroupController.cs +++ b/src/Controls/src/Core/RadioButtonGroupController.cs @@ -131,7 +131,7 @@ void SetSelectedValue(object radioButtonValue) if (radioButtonValue != null) { - MessagingCenter.Send(_layout, RadioButtonGroup.GroupValueChangedMessage, + MessagingCenter.Send(_layout, RadioButtonGroup.GroupValueChangedMessage, new RadioButtonGroupValueChanged(_groupName, RadioButtonGroup.GetVisualRoot(_layout), radioButtonValue)); } } From 334bc2da86632da77f97d3b779f4f99bc3d7227f Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Thu, 7 Apr 2022 10:27:59 -0700 Subject: [PATCH 2/3] Additional fix --- src/Controls/src/Core/RadioButtonGroupController.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Controls/src/Core/RadioButtonGroupController.cs b/src/Controls/src/Core/RadioButtonGroupController.cs index 36200c990059..3a3d70a577cd 100644 --- a/src/Controls/src/Core/RadioButtonGroupController.cs +++ b/src/Controls/src/Core/RadioButtonGroupController.cs @@ -100,6 +100,11 @@ void AddRadioButton(RadioButton radioButton) { _layout.SetValue(RadioButtonGroup.SelectedValueProperty, radioButton.Value); } + + if (radioButton.Value.Equals(this.SelectedValue)) + { + radioButton.IsChecked = true; + } } void UpdateGroupName(Element element, string name, string oldName = null) From 4837691907f7ec79c7a8d8dd9d2df6a0aceb7573 Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Thu, 7 Apr 2022 20:26:27 -0700 Subject: [PATCH 3/3] Beware of null --- src/Controls/src/Core/RadioButton.cs | 2 +- src/Controls/src/Core/RadioButtonGroupController.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controls/src/Core/RadioButton.cs b/src/Controls/src/Core/RadioButton.cs index a6804539849a..fc80950cee28 100644 --- a/src/Controls/src/Core/RadioButton.cs +++ b/src/Controls/src/Core/RadioButton.cs @@ -472,7 +472,7 @@ void HandleRadioButtonGroupSelectionChanged(RadioButton selected, RadioButtonGro void HandleRadioButtonGroupValueChanged(Element layout, RadioButtonGroupValueChanged args) { - if (IsChecked || string.IsNullOrEmpty(GroupName) || GroupName != args.GroupName || !Value.Equals(args.Value) || !MatchesScope(args)) + if (IsChecked || string.IsNullOrEmpty(GroupName) || GroupName != args.GroupName || !object.Equals(Value, args.Value) || !MatchesScope(args)) { return; } diff --git a/src/Controls/src/Core/RadioButtonGroupController.cs b/src/Controls/src/Core/RadioButtonGroupController.cs index 3a3d70a577cd..25724cdb2eea 100644 --- a/src/Controls/src/Core/RadioButtonGroupController.cs +++ b/src/Controls/src/Core/RadioButtonGroupController.cs @@ -101,7 +101,7 @@ void AddRadioButton(RadioButton radioButton) _layout.SetValue(RadioButtonGroup.SelectedValueProperty, radioButton.Value); } - if (radioButton.Value.Equals(this.SelectedValue)) + if (object.Equals(radioButton.Value, this.SelectedValue)) { radioButton.IsChecked = true; }