public static void RemoveHoldingKeysReleasedHandler(DependencyObject d, RoutedEventHandler handler) { d.ThrowIfNull("d"); handler.ThrowIfNull("handler"); var uie = d as UIElement; if(uie != null) { uie.RemoveHandler(HoldingKeysReleasedEvent, handler); } else { var ce = d as ContentElement; if(ce != null) { ce.RemoveHandler(HoldingKeysReleasedEvent, handler); } else { var uie3 = d as UIElement3D; if(uie3 != null) { uie3.RemoveHandler(HoldingKeysReleasedEvent, handler); } else { throw new ArgumentException("d"); } } } }