File tree 7 files changed +336
-0
lines changed
src/Avalonia.Xaml.Interactions.Custom/InputElement
7 files changed +336
-0
lines changed Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerCaptureLostTrigger : RoutedEventTriggerBase
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ public bool MarkAsHandled { get ; set ; }
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ /// <param name="disposables"></param>
22
+ protected override void OnAttached ( CompositeDisposable disposables )
23
+ {
24
+ if ( AssociatedObject is InputElement element )
25
+ {
26
+ var disposable = element . AddDisposableHandler (
27
+ InputElement . PointerCaptureLostEvent ,
28
+ OnPointerCaptureLost ,
29
+ EventRoutingStrategy ) ;
30
+ disposables . Add ( disposable ) ;
31
+ }
32
+ }
33
+
34
+ private void OnPointerCaptureLost ( object ? sender , PointerCaptureLostEventArgs e )
35
+ {
36
+ if ( ! IsEnabled )
37
+ {
38
+ return ;
39
+ }
40
+
41
+ e . Handled = MarkAsHandled ;
42
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
43
+ }
44
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerEnteredTrigger : RoutedEventTriggerBase
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ public bool MarkAsHandled { get ; set ; }
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ /// <param name="disposables"></param>
22
+ protected override void OnAttached ( CompositeDisposable disposables )
23
+ {
24
+ if ( AssociatedObject is InputElement element )
25
+ {
26
+ var disposable = element . AddDisposableHandler (
27
+ InputElement . PointerEnteredEvent ,
28
+ OnPointerEntered ,
29
+ EventRoutingStrategy ) ;
30
+ disposables . Add ( disposable ) ;
31
+ }
32
+ }
33
+
34
+ private void OnPointerEntered ( object ? sender , PointerEventArgs e )
35
+ {
36
+ if ( ! IsEnabled )
37
+ {
38
+ return ;
39
+ }
40
+
41
+ e . Handled = MarkAsHandled ;
42
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
43
+ }
44
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerExitedTrigger : RoutedEventTriggerBase
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ public bool MarkAsHandled { get ; set ; }
17
+
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ /// <param name="disposables"></param>
22
+ protected override void OnAttached ( CompositeDisposable disposables )
23
+ {
24
+ if ( AssociatedObject is InputElement element )
25
+ {
26
+ var disposable = element . AddDisposableHandler (
27
+ InputElement . PointerExitedEvent ,
28
+ OnPointerExited ,
29
+ EventRoutingStrategy ) ;
30
+ disposables . Add ( disposable ) ;
31
+ }
32
+ }
33
+
34
+ private void OnPointerExited ( object ? sender , PointerEventArgs e )
35
+ {
36
+ if ( ! IsEnabled )
37
+ {
38
+ return ;
39
+ }
40
+
41
+ e . Handled = MarkAsHandled ;
42
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
43
+ }
44
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerMovedTrigger : RoutedEventTriggerBase
12
+ {
13
+ static PointerMovedTrigger ( )
14
+ {
15
+ EventRoutingStrategyProperty . OverrideMetadata < PointerMovedTrigger > (
16
+ new StyledPropertyMetadata < RoutingStrategies > (
17
+ defaultValue : RoutingStrategies . Tunnel | RoutingStrategies . Bubble ) ) ;
18
+ }
19
+
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ public bool MarkAsHandled { get ; set ; }
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ /// <param name="disposables"></param>
29
+ protected override void OnAttached ( CompositeDisposable disposables )
30
+ {
31
+ if ( AssociatedObject is InputElement element )
32
+ {
33
+ var disposable = element . AddDisposableHandler (
34
+ InputElement . PointerMovedEvent ,
35
+ OnPointerMoved ,
36
+ EventRoutingStrategy ) ;
37
+ disposables . Add ( disposable ) ;
38
+ }
39
+ }
40
+
41
+ private void OnPointerMoved ( object ? sender , PointerEventArgs e )
42
+ {
43
+ if ( ! IsEnabled )
44
+ {
45
+ return ;
46
+ }
47
+
48
+ e . Handled = MarkAsHandled ;
49
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerPressedTrigger : RoutedEventTriggerBase
12
+ {
13
+ static PointerPressedTrigger ( )
14
+ {
15
+ EventRoutingStrategyProperty . OverrideMetadata < PointerPressedTrigger > (
16
+ new StyledPropertyMetadata < RoutingStrategies > (
17
+ defaultValue : RoutingStrategies . Tunnel | RoutingStrategies . Bubble ) ) ;
18
+ }
19
+
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ public bool MarkAsHandled { get ; set ; }
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ /// <param name="disposables"></param>
29
+ protected override void OnAttached ( CompositeDisposable disposables )
30
+ {
31
+ if ( AssociatedObject is InputElement element )
32
+ {
33
+ var disposable = element . AddDisposableHandler (
34
+ InputElement . PointerPressedEvent ,
35
+ OnPointerPressed ,
36
+ EventRoutingStrategy ) ;
37
+ disposables . Add ( disposable ) ;
38
+ }
39
+ }
40
+
41
+ private void OnPointerPressed ( object ? sender , PointerPressedEventArgs e )
42
+ {
43
+ if ( ! IsEnabled )
44
+ {
45
+ return ;
46
+ }
47
+
48
+ e . Handled = MarkAsHandled ;
49
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerReleasedTrigger : RoutedEventTriggerBase
12
+ {
13
+ static PointerReleasedTrigger ( )
14
+ {
15
+ EventRoutingStrategyProperty . OverrideMetadata < PointerReleasedTrigger > (
16
+ new StyledPropertyMetadata < RoutingStrategies > (
17
+ defaultValue : RoutingStrategies . Tunnel | RoutingStrategies . Bubble ) ) ;
18
+ }
19
+
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ public bool MarkAsHandled { get ; set ; }
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ /// <param name="disposables"></param>
29
+ protected override void OnAttached ( CompositeDisposable disposables )
30
+ {
31
+ if ( AssociatedObject is InputElement element )
32
+ {
33
+ var disposable = element . AddDisposableHandler (
34
+ InputElement . PointerReleasedEvent ,
35
+ OnPointerReleased ,
36
+ EventRoutingStrategy ) ;
37
+ disposables . Add ( disposable ) ;
38
+ }
39
+ }
40
+
41
+ private void OnPointerReleased ( object ? sender , PointerReleasedEventArgs e )
42
+ {
43
+ if ( ! IsEnabled )
44
+ {
45
+ return ;
46
+ }
47
+
48
+ e . Handled = MarkAsHandled ;
49
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
50
+ }
51
+ }
Original file line number Diff line number Diff line change
1
+ using System . Reactive . Disposables ;
2
+ using Avalonia . Input ;
3
+ using Avalonia . Interactivity ;
4
+ using Avalonia . Xaml . Interactivity ;
5
+
6
+ namespace Avalonia . Xaml . Interactions . Custom ;
7
+
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public class PointerWheelChangedTrigger : RoutedEventTriggerBase
12
+ {
13
+ static PointerWheelChangedTrigger ( )
14
+ {
15
+ EventRoutingStrategyProperty . OverrideMetadata < PointerWheelChangedTrigger > (
16
+ new StyledPropertyMetadata < RoutingStrategies > (
17
+ defaultValue : RoutingStrategies . Tunnel | RoutingStrategies . Bubble ) ) ;
18
+ }
19
+
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ public bool MarkAsHandled { get ; set ; }
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ /// <param name="disposables"></param>
29
+ protected override void OnAttached ( CompositeDisposable disposables )
30
+ {
31
+ if ( AssociatedObject is InputElement element )
32
+ {
33
+ var disposable = element . AddDisposableHandler (
34
+ InputElement . PointerWheelChangedEvent ,
35
+ OnPointerWheelChanged ,
36
+ EventRoutingStrategy ) ;
37
+ disposables . Add ( disposable ) ;
38
+ }
39
+ }
40
+
41
+ private void OnPointerWheelChanged ( object ? sender , PointerWheelEventArgs e )
42
+ {
43
+ if ( ! IsEnabled )
44
+ {
45
+ return ;
46
+ }
47
+
48
+ e . Handled = MarkAsHandled ;
49
+ Interaction . ExecuteActions ( AssociatedObject , Actions , e ) ;
50
+ }
51
+ }
You can’t perform that action at this time.
0 commit comments