Browse Source

SelectingItemsControl.AutoScrollToSelectedItem

Added SelectingItemsControl.AutoScrollToSelectedItem. Closes #363.
pull/417/head
Steven Kirk 10 years ago
parent
commit
6f32c868d9
  1. 5
      src/Perspex.Controls/Mixins/SelectableMixin.cs
  2. 17
      src/Perspex.Controls/Primitives/SelectingItemsControl.cs
  3. 4
      src/Perspex.Controls/TreeView.cs

5
src/Perspex.Controls/Mixins/SelectableMixin.cs

@ -50,11 +50,14 @@ namespace Perspex.Controls.Mixins
if (sender != null)
{
var itemsControl = sender.Parent as SelectingItemsControl;
if ((bool)x.NewValue)
{
((IPseudoClasses)sender.Classes).Add(":selected");
if (((IVisual)sender).IsAttachedToVisualTree)
if (((IVisual)sender).IsAttachedToVisualTree &&
itemsControl?.AutoScrollToSelectedItem == true)
{
sender.BringIntoView();
}

17
src/Perspex.Controls/Primitives/SelectingItemsControl.cs

@ -38,6 +38,14 @@ namespace Perspex.Controls.Primitives
/// </remarks>
public class SelectingItemsControl : ItemsControl
{
/// <summary>
/// Defines the <see cref="AutoScrollToSelectedItem"/> property.
/// </summary>
public static readonly StyledProperty<bool> AutoScrollToSelectedItemProperty =
PerspexProperty.Register<SelectingItemsControl, bool>(
nameof(AutoScrollToSelectedItem),
defaultValue: true);
/// <summary>
/// Defines the <see cref="SelectedIndex"/> property.
/// </summary>
@ -123,6 +131,15 @@ namespace Perspex.Controls.Primitives
remove { RemoveHandler(SelectionChangedEvent, value); }
}
/// <summary>
/// Gets or sets a value indicating whether to automatically scroll to newly selected items.
/// </summary>
public bool AutoScrollToSelectedItem
{
get { return GetValue(AutoScrollToSelectedItemProperty); }
set { SetValue(AutoScrollToSelectedItemProperty, value); }
}
/// <summary>
/// Gets or sets the index of the selected item.
/// </summary>

4
src/Perspex.Controls/TreeView.cs

@ -22,9 +22,7 @@ namespace Perspex.Controls
/// Defines the <see cref="AutoScrollToSelectedItem"/> property.
/// </summary>
public static readonly StyledProperty<bool> AutoScrollToSelectedItemProperty =
PerspexProperty.Register<TreeView, bool>(
nameof(AutoScrollToSelectedItem),
defaultValue: true);
SelectingItemsControl.AutoScrollToSelectedItemProperty.AddOwner<TreeView>();
/// <summary>
/// Defines the <see cref="SelectedItem"/> property.

Loading…
Cancel
Save