Skip to content

Instantly share code, notes, and snippets.

@NicoVermeir
Created November 28, 2013 21:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NicoVermeir/7698567 to your computer and use it in GitHub Desktop.
Save NicoVermeir/7698567 to your computer and use it in GitHub Desktop.
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
namespace LongListSelectorAdd
{
public class ExtendedSelector : LongListSelector
{
private int _count;
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register("SelectedItem", typeof(object), typeof(ExtendedSelector), new PropertyMetadata(default(object)));
public static readonly DependencyProperty SelectionModeProperty =
DependencyProperty.Register("SelectionMode", typeof(SelectionMode), typeof(ExtendedSelector), new PropertyMetadata(default(SelectionMode)));
public SelectionMode SelectionMode
{
get { return (SelectionMode)GetValue(SelectionModeProperty); }
set { SetValue(SelectionModeProperty, value); }
}
public new object SelectedItem
{
get { return GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
public ExtendedSelector()
{
SelectionMode = SelectionMode.Single;
SelectionChanged += (sender, args) =>
{
if (SelectionMode == SelectionMode.Single)
SelectedItem = args.AddedItems[0];
else if (SelectionMode == SelectionMode.Multiple)
{
if (SelectedItem == null)
{
SelectedItem = new List<object>();
}
foreach (var item in args.AddedItems)
{
((List<object>)SelectedItem).Add(item);
}
foreach (var removedItem in args.RemovedItems)
{
if (((List<object>)SelectedItem).Contains(removedItem))
{
((List<object>)SelectedItem).Remove(removedItem);
}
}
}
};
Loaded += (sender, args) =>
{
((INotifyCollectionChanged)ItemsSource).CollectionChanged += (sender2, args2) =>
{
if(ItemsSource.Count > 0)
ScrollTo(ItemsSource[0]);
};
};
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment