private void _list_PreviewTouchUp(object sender, TouchEventArgs e)
{
double dv = 0;
if (touch_points.Count > 0)
dv = e.GetTouchPoint(this._list).Position.Y - touch_points[0].Position.Y;
bool can_scroll = false;
if (!is_tap.ContainsKey(e.TouchDevice.Id))
can_scroll = true;
else
{
if (is_tap[e.TouchDevice.Id])
{
FrameworkElement findSource = e.OriginalSource as FrameworkElement;
ListBoxItem element = null;
while (element == null && findSource != null)
if ((element = findSource as ListBoxItem) == null)
findSource = VisualTreeHelper.GetParent(findSource) as FrameworkElement;
if (element != null)
{
_list.SelectedItem = element;
try
{
_list_SelectionChanged((item_generic)element.DataContext);
}
catch (Exception e2) { log.WriteErrorLog(e2); }
}
}
else
can_scroll = true;
}
if (can_scroll)
{
ScrollViewer scroll = configurations.GetDescendantByType(this._list, typeof(ScrollViewer)) as ScrollViewer;
//double dv = e.GetTouchPoint(this.contributions).Position.X - touch_points[touch_points.Count - 1].Position.X;
try
{
//scroll.ScrollToHorizontalOffset(scroll.HorizontalOffset + (-2 * dv));
scroll.ScrollToVerticalOffset(last_scroll_offset + (-1 * dv));
}
catch (Exception) { }
last_scroll_offset = scroll.VerticalOffset;
}
is_tap.Remove(e.TouchDevice.Id);
this.touch_points.Clear();
consecutive_drag_points = 0;
UIElement element2 = sender as UIElement;
element2.ReleaseTouchCapture(e.TouchDevice);
}