nature_net.user_controls.custom_listbox._list_PreviewTouchUp C# (CSharp) Метод

_list_PreviewTouchUp() приватный Метод

private _list_PreviewTouchUp ( object sender, System.Windows.Input.TouchEventArgs e ) : void
sender object
e System.Windows.Input.TouchEventArgs
Результат void
        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);
        }