/// <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);
 }