nature_net.user_controls.custom_listbox_v2.HitTestOverItem C# (CSharp) Метод

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

private HitTestOverItem ( System.Windows.Input.TouchEventArgs e, bool drag, bool v2, bool v1, bool other ) : UIElement
e System.Windows.Input.TouchEventArgs
drag bool
v2 bool
v1 bool
other bool
Результат UIElement
        UIElement HitTestOverItem(TouchEventArgs e, bool drag, bool v2, bool v1, bool other)
        {
            if (e.Handled)
                return null;
            TouchPoint pt = e.GetTouchPoint(this._list as IInputElement);
            hitResultsList.Clear();

            if (v2)
                VisualTreeHelper.HitTest(this._list, null,
                    new HitTestResultCallback(HitTestResult_Tap_v2),
                    new PointHitTestParameters(new Point(pt.Position.X, pt.Position.Y)));
            if (v1)
                VisualTreeHelper.HitTest(this._list, null,
                    new HitTestResultCallback(HitTestResult_Tap_v1),
                    new PointHitTestParameters(new Point(pt.Position.X, pt.Position.Y)));
            if (other)
                VisualTreeHelper.HitTest(this._list, null,
                    new HitTestResultCallback(HitTestResult_Tap_other),
                    new PointHitTestParameters(new Point(pt.Position.X, pt.Position.Y)));

            if (hitResultsList.Count > 0)
            {
                Type t_item = null;
                if (other) t_item = Type.GetType("nature_net.user_controls.collection_listbox_item");
                if (v1) t_item = Type.GetType("nature_net.user_controls.item_generic");
                if (v2) t_item = Type.GetType("nature_net.user_controls.item_generic_v2");
                if (t_item == null) return null;
                if (hitResultsList[hitResultsList.Count - 1].GetType() == t_item)
                {
                    if (!drag)
                    {
                        return (UIElement)hitResultsList[hitResultsList.Count - 1];
                    }
                    if (hitResultsList.Count > 1)
                    {
                        for (int counter = 0; counter < hitResultsList.Count - 1; counter++)
                        {
                            Type t1 = hitResultsList[counter].GetType();
                            Type t2 = null;
                            if (!other)
                                t2 = Type.GetType("System.Windows.Controls.Border, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
                            else
                                t2 = Type.GetType("System.Windows.Controls.Image, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
                            if (hitResultsList[counter].GetType() == t2)
                            {
                                FrameworkElement i2 = (FrameworkElement)hitResultsList[counter];
                                if (i2.Name == "right_panel_border" || i2.Name == "drag")
                                    return (UIElement)hitResultsList[hitResultsList.Count - 1];
                            }
                        }
                    }
                }
            }
            return null;
        }