private void SelectItem(StringHost item) { if (item == null) { // clearn current selection if (_SelectedItem != null) { _SelectedItem.IsSelected = false; } } else if (item != null && item._IsSelectable) { // clearn current selection if (_SelectedItem != null) { _SelectedItem.IsSelected = false; } // select the new item _SelectedItem = item; item.IsSelected = true; // udpate the index _SelectedIndexInView = StringHostItems.IndexOf(item); } }
private void ItemMouseLeave(object sender, MouseEventArgs e) { if (this.IsMouseCaptured) { FrameworkElement element = (sender as FrameworkElement); if (element != null) { StringHost item = (element.DataContext as StringHost); int index = StringHostItems.IndexOf(item); if (index == 9) { Point p = e.GetPosition(element); if (p.Y > 0) { if (_SelectNextTimer == null) { _SelectNextTimer = new DispatcherTimer(); _SelectNextTimer.Tick += new EventHandler(_SelectNextTimer_Tick); _SelectNextTimer.Interval = TimeSpan.FromMilliseconds(100); } _SelectNextTimer.Start(); } } if (index == 0) { Point p = e.GetPosition(element); if (p.Y < 0) { if (_SelectPreviousTimer == null) { _SelectPreviousTimer = new DispatcherTimer(); _SelectPreviousTimer.Tick += new EventHandler(_SelectPreviousTimer_Tick); _SelectPreviousTimer.Interval = TimeSpan.FromMilliseconds(100); } _SelectPreviousTimer.Start(); } } } } }