@@ -66,6 +66,8 @@ private void EnableButtonInteraction()
6666
6767 PointerEntered += Control_PointerEntered ;
6868 PointerExited += Control_PointerExited ;
69+ PointerCaptureLost += Control_PointerCaptureLost ;
70+ PointerCanceled += Control_PointerCanceled ;
6971 PreviewKeyDown += Control_PreviewKeyDown ;
7072 PreviewKeyUp += Control_PreviewKeyUp ;
7173 }
@@ -74,6 +76,8 @@ private void DisableButtonInteraction()
7476 {
7577 PointerEntered -= Control_PointerEntered ;
7678 PointerExited -= Control_PointerExited ;
79+ PointerCaptureLost -= Control_PointerCaptureLost ;
80+ PointerCanceled -= Control_PointerCanceled ;
7781 PreviewKeyDown -= Control_PreviewKeyDown ;
7882 PreviewKeyUp -= Control_PreviewKeyUp ;
7983 }
@@ -94,16 +98,30 @@ private void Control_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
9498 }
9599 }
96100
101+ public void Control_PointerEntered ( object sender , PointerRoutedEventArgs e )
102+ {
103+ base . OnPointerEntered ( e ) ;
104+ VisualStateManager . GoToState ( this , PointerOverState , true ) ;
105+ }
106+
97107 public void Control_PointerExited ( object sender , PointerRoutedEventArgs e )
98108 {
99109 base . OnPointerExited ( e ) ;
100110 VisualStateManager . GoToState ( this , NormalState , true ) ;
101111 }
102- public void Control_PointerEntered ( object sender , PointerRoutedEventArgs e )
112+
113+ private void Control_PointerCaptureLost ( object sender , PointerRoutedEventArgs e )
103114 {
104- base . OnPointerEntered ( e ) ;
105- VisualStateManager . GoToState ( this , PointerOverState , true ) ;
115+ base . OnPointerCaptureLost ( e ) ;
116+ VisualStateManager . GoToState ( this , NormalState , true ) ;
106117 }
118+
119+ private void Control_PointerCanceled ( object sender , PointerRoutedEventArgs e )
120+ {
121+ base . OnPointerCanceled ( e ) ;
122+ VisualStateManager . GoToState ( this , NormalState , true ) ;
123+ }
124+
107125 protected override void OnPointerPressed ( PointerRoutedEventArgs e )
108126 {
109127 // e.Handled = true;
@@ -113,6 +131,7 @@ protected override void OnPointerPressed(PointerRoutedEventArgs e)
113131 VisualStateManager . GoToState ( this , PressedState , true ) ;
114132 }
115133 }
134+
116135 protected override void OnPointerReleased ( PointerRoutedEventArgs e )
117136 {
118137 if ( IsClickEnabled )
0 commit comments