diff options
author | Eric Maupin <ermaup@microsoft.com> | 2018-02-20 21:20:34 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2018-02-27 21:11:49 +0300 |
commit | e3185a6de1f0d8f0d563018a9413e66eb92302de (patch) | |
tree | 0d9b9ed43e7f69dd45c522ea77d359367e1ff228 /Xamarin.PropertyEditing.Windows | |
parent | 38da46e4ea4329979cd2e6d08f6f3267193f5f8f (diff) |
[Win] Ensure ChoiceControl deselects
In theory just checking one radio in the group should be enough, but in
some circumstances when VMs change it doesn't appear to be enough, so
we'll enforce it.
Diffstat (limited to 'Xamarin.PropertyEditing.Windows')
-rw-r--r-- | Xamarin.PropertyEditing.Windows/ChoiceControl.cs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Xamarin.PropertyEditing.Windows/ChoiceControl.cs b/Xamarin.PropertyEditing.Windows/ChoiceControl.cs index f80ad63..efba8c1 100644 --- a/Xamarin.PropertyEditing.Windows/ChoiceControl.cs +++ b/Xamarin.PropertyEditing.Windows/ChoiceControl.cs @@ -66,13 +66,17 @@ namespace Xamarin.PropertyEditing.Windows protected override void OnSelectionChanged (SelectionChangedEventArgs e) { - if (e.AddedItems.Count == 0) return; - var presenter = (ContentPresenter) ItemContainerGenerator.ContainerFromItem (e.AddedItems[0]); - if (presenter == null) - return; + if (e.RemovedItems.Count > 0) { + var removedToggle = GetToggle (e.RemovedItems[0]); + if (removedToggle != null) + removedToggle.IsChecked = false; + } - var toggle = (ToggleButton) VisualTreeHelper.GetChild (presenter, 0); - toggle.IsChecked = true; + if (e.AddedItems.Count > 0) { + var addedToggle = GetToggle (e.AddedItems[0]); + if (addedToggle != null) + addedToggle.IsChecked = true; + } } internal void FocusSelectedItem () @@ -87,6 +91,15 @@ namespace Xamarin.PropertyEditing.Windows toggle.Focus (); } + private ToggleButton GetToggle (object item) + { + var presenter = (ContentPresenter) ItemContainerGenerator.ContainerFromItem (item); + if (presenter == null) + return null; + + return VisualTreeHelper.GetChild (presenter, 0) as ToggleButton; + } + private void OnItemContainerGeneratorOnStatusChanged (object sender, EventArgs args) { if (ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) |