private static void OnCursorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var oldCursor = (CoreCursor)e.OldValue; var newCursor = (CoreCursor)d.GetValue(CursorProperty); if (oldCursor == null) { var handler = new CursorDisplayHandler(); handler.Attach((FrameworkElement)d); SetCursorDisplayHandler(d, handler); } else { var handler = GetCursorDisplayHandler(d); if (newCursor == null) { handler.Detach(); SetCursorDisplayHandler(d, null); } else { handler.UpdateCursor(); } } }
public static void SetCursorDisplayHandler(DependencyObject d, CursorDisplayHandler value) => d.SetValue(CursorDisplayHandlerProperty, value);