diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-03-27 14:11:27 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2021-03-27 14:11:27 +0100 |
| commit | 8acdcdfe818c682964d00665d6e92a3b01bcf0eb (patch) | |
| tree | e3995eef6b7d019dff48e141f8cd4b292946c557 | |
| parent | eb5af95343473183385a4446f1a74c3ac39ad89c (diff) | |
ISelectable handling improvments
| -rw-r--r-- | Crow/src/Widgets/TemplatedContainer.cs | 5 | ||||
| -rw-r--r-- | Crow/src/Widgets/TemplatedGroup.cs | 15 |
2 files changed, 13 insertions, 7 deletions
diff --git a/Crow/src/Widgets/TemplatedContainer.cs b/Crow/src/Widgets/TemplatedContainer.cs index b607ff91..b8d7a128 100644 --- a/Crow/src/Widgets/TemplatedContainer.cs +++ b/Crow/src/Widgets/TemplatedContainer.cs @@ -1,6 +1,7 @@ -// Copyright (c) 2013-2019 Bruyère Jean-Philippe jp_bruyere@hotmail.com +// Copyright (c) 2013-2021 Bruyère Jean-Philippe jp_bruyere@hotmail.com // // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) +using System; namespace Crow { @@ -38,6 +39,8 @@ namespace Crow return _contentContainer == null ? null : _contentContainer.Child; } set { + if (_contentContainer == null) + throw new Exception ("TemplatedContainer template Must contain a Container named 'Content'"); _contentContainer.SetChild(value); NotifyValueChanged ("HasContent", HasContent); } diff --git a/Crow/src/Widgets/TemplatedGroup.cs b/Crow/src/Widgets/TemplatedGroup.cs index 3e22480e..713f4979 100644 --- a/Crow/src/Widgets/TemplatedGroup.cs +++ b/Crow/src/Widgets/TemplatedGroup.cs @@ -454,9 +454,8 @@ namespace Crow { } } - if (g is ListItem li) { + if (g is ISelectable li) li.Selected += Li_Selected; - } g.DataSource = o; } @@ -464,6 +463,10 @@ namespace Crow { //void expandable_expandevent (object sender, EventHandler ) void Li_Selected (object sender, EventArgs e) { + if (selectedItemContainer is ISelectable li) + li.IsSelected = false; + selectedItemContainer = sender as Widget; + SelectedItemContainerChanged.Raise (this, new SelectionChangeEventArgs (sender)); } @@ -498,11 +501,11 @@ namespace Crow { } internal virtual void itemClick(object sender, MouseButtonEventArgs e){ //SelectedIndex = (int)((IList)data)?.IndexOf((sender as Widget).DataSource); - if (selectedItemContainer is ISelectable li) - li.IsSelected = false; - selectedItemContainer = sender as Widget; - if (selectedItemContainer is ISelectable nli) + + if (sender is ISelectable nli) nli.IsSelected = true; + else + selectedItemContainer = sender as Widget; if (selectedItemContainer == null) return; SelectedItem = selectedItemContainer.DataSource; |