diff --git a/Perspex.Controls/ListBoxItem.cs b/Perspex.Controls/ListBoxItem.cs
index ce9cdacb5d..e567dc9de6 100644
--- a/Perspex.Controls/ListBoxItem.cs
+++ b/Perspex.Controls/ListBoxItem.cs
@@ -6,20 +6,51 @@
namespace Perspex.Controls
{
+ using System;
+ using Perspex.Controls.Primitives;
+ using Perspex.Interactivity;
+
+ ///
+ /// An selectable item in a .
+ ///
public class ListBoxItem : ContentControl, ISelectable
{
+ ///
+ /// Defines the property.
+ ///
public static readonly PerspexProperty IsSelectedProperty =
- PerspexProperty.Register("IsSelected");
+ PerspexProperty.Register(nameof(IsSelected));
+ ///
+ /// Initializes static members of the class.
+ ///
static ListBoxItem()
{
Control.PseudoClass(IsSelectedProperty, ":selected");
+ IsSelectedProperty.Changed.Subscribe(IsSelectedChanged);
}
+ ///
+ /// Gets or sets the selection state of the item.
+ ///
public bool IsSelected
{
get { return this.GetValue(IsSelectedProperty); }
set { this.SetValue(IsSelectedProperty, value); }
}
+
+ ///
+ /// Called when the property changes on an object.
+ ///
+ /// The sender.
+ private static void IsSelectedChanged(PerspexPropertyChangedEventArgs e)
+ {
+ var interactive = e.Sender as IInteractive;
+
+ if (interactive != null)
+ {
+ interactive.RaiseEvent(new RoutedEventArgs(SelectingItemsControl.IsSelectedChangedEvent));
+ }
+ }
}
}
diff --git a/Perspex.Controls/Primitives/SelectingItemsControl.cs b/Perspex.Controls/Primitives/SelectingItemsControl.cs
index aab65f82a0..87fa6defd0 100644
--- a/Perspex.Controls/Primitives/SelectingItemsControl.cs
+++ b/Perspex.Controls/Primitives/SelectingItemsControl.cs
@@ -6,66 +6,81 @@
namespace Perspex.Controls.Primitives
{
- using Perspex.Controls.Utils;
- using Perspex.Input;
- using Perspex.VisualTree;
using System;
using System.Linq;
using System.Collections;
using System.Collections.Specialized;
-
+ using Perspex.Controls.Utils;
+ using Perspex.Input;
+ using Perspex.VisualTree;
+ using Perspex.Interactivity;
+
+ ///
+ /// An that maintains a selection.
+ ///
+ ///
+ /// TODO: Support multiple selection.
+ ///
public abstract class SelectingItemsControl : ItemsControl
{
+ ///
+ /// Defines the property.
+ ///
public static readonly PerspexProperty SelectedIndexProperty =
- PerspexProperty.Register("SelectedIndex", defaultValue: -1, coerce: CoerceSelectedIndex);
-
+ PerspexProperty.Register(
+ nameof(SelectedIndex),
+ defaultValue: -1,
+ coerce: CoerceSelectedIndex);
+
+ ///
+ /// Defines the property.
+ ///
public static readonly PerspexProperty