|
|
@@ -62,8 +62,7 @@ namespace Perspex.Controls.Primitives
|
|
|
RoutedEvent.Register<SelectingItemsControl, RoutedEventArgs>("IsSelectedChanged", RoutingStrategies.Bubble);
|
|
|
|
|
|
private int _selectedIndex = -1;
|
|
|
- private object _selectedItem;
|
|
|
- private IList<object> _selectedItems;
|
|
|
+ private IList<object> _selectedItems = new PerspexList<object>();
|
|
|
|
|
|
/// <summary>
|
|
|
/// Initializes static members of the <see cref="SelectingItemsControl"/> class.
|
|
|
@@ -81,7 +80,6 @@ namespace Perspex.Controls.Primitives
|
|
|
public SelectingItemsControl()
|
|
|
{
|
|
|
ItemContainerGenerator.ContainersInitialized.Subscribe(ContainersInitialized);
|
|
|
- _selectedItems = new PerspexList<object>();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -108,13 +106,25 @@ namespace Perspex.Controls.Primitives
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- return _selectedItem;
|
|
|
+ return _selectedItems.FirstOrDefault();
|
|
|
}
|
|
|
|
|
|
set
|
|
|
{
|
|
|
- value = Items?.Cast<object>().Contains(value) == true ? value : null;
|
|
|
- SetAndRaise(SelectedItemProperty, ref _selectedItem, value);
|
|
|
+ var old = SelectedItem;
|
|
|
+ var effective = Items?.Cast<object>().Contains(value) == true ? value : null;
|
|
|
+
|
|
|
+ if (effective != old)
|
|
|
+ {
|
|
|
+ _selectedItems.Clear();
|
|
|
+
|
|
|
+ if (effective != null)
|
|
|
+ {
|
|
|
+ _selectedItems.Add(effective);
|
|
|
+ }
|
|
|
+
|
|
|
+ RaisePropertyChanged(SelectedItemProperty, old, effective, BindingPriority.LocalValue);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|