Exemplo n.º 1
0
            private static void RaiseUsingCaptures(RaisePointerEventArgs raise, UIElement originalSource, PointerRoutedEventArgs routedArgs)
            {
                if (PointerCapture.TryGet(routedArgs.Pointer, out var capture))
                {
                    var targets = capture.Targets.ToList();
                    if (capture.IsImplicitOnly)
                    {
                        raise(originalSource, routedArgs, BubblingContext.Bubble);

                        foreach (var target in targets)
                        {
                            routedArgs.Handled = false;
                            raise(target.Element, routedArgs, BubblingContext.NoBubbling);
                        }
                    }
                    else
                    {
                        var explicitTarget = targets.Find(c => c.Kind == PointerCaptureKind.Explicit) !;

                        raise(explicitTarget.Element, routedArgs, BubblingContext.Bubble);

                        foreach (var target in targets)
                        {
                            if (target == explicitTarget)
                            {
                                continue;
                            }

                            routedArgs.Handled = false;
                            raise(target.Element, routedArgs, BubblingContext.NoBubbling);
                        }
                    }
                }
                else
                {
                    raise(originalSource, routedArgs, BubblingContext.Bubble);
                }
            }
Exemplo n.º 2
0
 private static void Raise(RaisePointerEventArgs raise, VisualTreeHelper.Branch branch, PointerRoutedEventArgs routedArgs)
 => raise(branch.Leaf, routedArgs, BubblingContext.BubbleUpTo(branch.Root));
Exemplo n.º 3
0
 private static void Raise(RaisePointerEventArgs raise, UIElement originalSource, PointerRoutedEventArgs routedArgs)
 => raise(originalSource, routedArgs, BubblingContext.Bubble);