|
|
|
@ -38,6 +38,14 @@ namespace Perspex.Controls.Primitives |
|
|
|
o => o.SelectedItem, |
|
|
|
(o, v) => o.SelectedItem = v); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Defines the <see cref="SelectedIndexes"/> property.
|
|
|
|
/// </summary>
|
|
|
|
protected static readonly PerspexProperty<IList<int>> SelectedIndexesProperty = |
|
|
|
PerspexProperty.RegisterDirect<SelectingItemsControl, IList<int>>( |
|
|
|
nameof(SelectedIndexes), |
|
|
|
o => o.SelectedIndexes); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Defines the <see cref="SelectedItems"/> property.
|
|
|
|
/// </summary>
|
|
|
|
@ -61,8 +69,8 @@ namespace Perspex.Controls.Primitives |
|
|
|
public static readonly RoutedEvent<RoutedEventArgs> IsSelectedChangedEvent = |
|
|
|
RoutedEvent.Register<SelectingItemsControl, RoutedEventArgs>("IsSelectedChanged", RoutingStrategies.Bubble); |
|
|
|
|
|
|
|
private int _selectedIndex = -1; |
|
|
|
private IList<object> _selectedItems = new PerspexList<object>(); |
|
|
|
private PerspexList<int> _selectedIndexes = new PerspexList<int>(); |
|
|
|
private PerspexList<object> _selectedItems = new PerspexList<object>(); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes static members of the <see cref="SelectingItemsControl"/> class.
|
|
|
|
@ -89,13 +97,25 @@ namespace Perspex.Controls.Primitives |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
return _selectedIndex; |
|
|
|
return _selectedIndexes.Count > 0 ? _selectedIndexes[0]: -1; |
|
|
|
} |
|
|
|
|
|
|
|
set |
|
|
|
{ |
|
|
|
value = (value >= 0 && value < Items?.Cast<object>().Count()) ? value : -1; |
|
|
|
SetAndRaise(SelectedIndexProperty, ref _selectedIndex, value); |
|
|
|
var old = SelectedIndex; |
|
|
|
var effective = (value >= 0 && value < Items?.Cast<object>().Count()) ? value : -1; |
|
|
|
|
|
|
|
if (old != effective) |
|
|
|
{ |
|
|
|
_selectedIndexes.Clear(); |
|
|
|
|
|
|
|
if (effective != -1) |
|
|
|
{ |
|
|
|
_selectedIndexes.Add(effective); |
|
|
|
} |
|
|
|
|
|
|
|
RaisePropertyChanged(SelectedIndexProperty, old, effective, BindingPriority.LocalValue); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -128,6 +148,14 @@ namespace Perspex.Controls.Primitives |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets the selected indexes.
|
|
|
|
/// </summary>
|
|
|
|
protected IList<int> SelectedIndexes |
|
|
|
{ |
|
|
|
get { return _selectedIndexes; } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets the selected items.
|
|
|
|
/// </summary>
|
|
|
|
|