/// <summary> /// Handles changes to the ContextMenu DependencyProperty. /// </summary> /// <param name="o">DependencyObject that changed.</param> /// <param name="e">Event data for the DependencyPropertyChangedEvent.</param> private static void OnContextMenuChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) { FrameworkElement element = o as FrameworkElement; if (null != element) { MenuFlyout oldContextMenu = e.OldValue as MenuFlyout; if (null != oldContextMenu) { var holdListener = GetHoldListener(element); holdListener.HoldingStarted -= OnHoldingStarted; holdListener.HoldingEnded -= OnHoldingEnded; holdListener.Dispose(); element.ClearValue(HoldListenerProperty); element.ClearValue(ReleaseThresholdProperty); } MenuFlyout newContextMenu = e.NewValue as MenuFlyout; if (null != newContextMenu) { var holdListener = new HoldListener(element); holdListener.HoldingStarted += OnHoldingStarted; holdListener.HoldingEnded += OnHoldingEnded; SetHoldListener(element, holdListener); } } }
private static void SetHoldListener(UIElement element, HoldListener value) { element.SetValue(HoldListenerProperty, value); }