@@ -17,35 +17,38 @@ public static IDisposable BindEnabled(this VisualElement element, IReadOnlyReact
17
17
element . SetEnabled ( __property ) ;
18
18
} ) ;
19
19
}
20
- public static IDisposable BindClick ( this VisualElement element , ReactiveCommand < ClickEvent > command )
20
+ public static IDisposable BindClick ( this VisualElement element , IReactiveCommand < ClickEvent > command )
21
21
{
22
22
var d1 = element . BindEnabled ( command . CanExecute ) ;
23
- var d2 = element . BindVisualElementCallback ( command ) ;
23
+ var d2 = element . BindCallback ( command ) ;
24
24
return StableCompositeDisposable . Create ( d1 , d2 ) ;
25
25
}
26
- public static IDisposable BindClick < TArgs > ( this VisualElement element , ReactiveCommand < ( ClickEvent , TArgs ) > command , TArgs dataForCallback )
26
+ public static IDisposable BindClick < TArgs > ( this VisualElement element , IReactiveCommand < ( ClickEvent , TArgs ) > command , TArgs dataForCallback )
27
27
{
28
28
var d1 = element . BindEnabled ( command . CanExecute ) ;
29
- var d2 = element . BindVisualElementCallback ( command , dataForCallback ) ;
29
+ var d2 = element . BindCallback ( command , dataForCallback ) ;
30
30
return StableCompositeDisposable . Create ( d1 , d2 ) ;
31
31
}
32
- public static IDisposable BindVisualElementCallback < TEventType > ( this VisualElement element , EventCallback < TEventType > callback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
32
+ #endregion
33
+
34
+ #region Callback Event Handler
35
+ public static IDisposable BindCallback < TEventType > ( this CallbackEventHandler element , EventCallback < TEventType > callback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
33
36
{
34
37
element . RegisterCallback ( callback , trickleDown ) ;
35
38
return Disposable . Create ( ( ) => { element . UnregisterCallback ( callback , trickleDown ) ; } ) ;
36
39
}
37
- public static IDisposable BindVisualElementCallback < TEventType , TUserArgsType > ( this VisualElement element , EventCallback < TEventType , TUserArgsType > callback , TUserArgsType dataForCallback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
40
+ public static IDisposable BindCallback < TEventType , TUserArgsType > ( this CallbackEventHandler element , EventCallback < TEventType , TUserArgsType > callback , TUserArgsType dataForCallback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
38
41
{
39
42
element . RegisterCallback ( callback , dataForCallback , trickleDown ) ;
40
43
return Disposable . Create ( ( ) => { element . UnregisterCallback ( callback , trickleDown ) ; } ) ;
41
44
}
42
- public static IDisposable BindVisualElementCallback < TEventType > ( this VisualElement element , ReactiveCommand < TEventType > command , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
45
+ public static IDisposable BindCallback < TEventType > ( this CallbackEventHandler element , IReactiveCommand < TEventType > command , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
43
46
{
44
47
var callback = new EventCallback < TEventType > ( ( ev ) => command . Execute ( ev ) ) ;
45
48
element . RegisterCallback ( callback , trickleDown ) ;
46
49
return Disposable . Create ( ( ) => { element . UnregisterCallback ( callback , trickleDown ) ; } ) ;
47
50
}
48
- public static IDisposable BindVisualElementCallback < TEventType , TUserArgsType > ( this VisualElement element , ReactiveCommand < ( TEventType , TUserArgsType ) > command , TUserArgsType dataForCallback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
51
+ public static IDisposable BindCallback < TEventType , TUserArgsType > ( this CallbackEventHandler element , IReactiveCommand < ( TEventType , TUserArgsType ) > command , TUserArgsType dataForCallback , TrickleDown trickleDown = TrickleDown . NoTrickleDown ) where TEventType : EventBase < TEventType > , new ( )
49
52
{
50
53
var callback = new EventCallback < TEventType , TUserArgsType > ( ( ev , args ) => command . Execute ( ( ev , args ) ) ) ;
51
54
element . RegisterCallback ( callback , dataForCallback , trickleDown ) ;
@@ -54,19 +57,60 @@ public static IDisposable BindClick<TArgs>(this VisualElement element, ReactiveC
54
57
#endregion
55
58
56
59
#region Notifications
60
+ public static IDisposable BindValueChanged < T > ( this INotifyValueChanged < T > element , IReactiveCommand < ChangeEvent < T > > command )
61
+ {
62
+ var callback = new EventCallback < ChangeEvent < T > > ( ( ev ) => command . Execute ( ev ) ) ;
63
+ element . RegisterValueChangedCallback ( callback ) ;
64
+ return Disposable . Create ( ( ) => { element . UnregisterValueChangedCallback ( callback ) ; } ) ;
65
+ }
57
66
public static IDisposable BindValueChanged < T > ( this INotifyValueChanged < T > element , IReactiveProperty < T > property )
58
67
{
59
68
var callback = new EventCallback < ChangeEvent < T > > ( ( ev ) => property . Value = ev . newValue ) ;
60
69
element . RegisterValueChangedCallback ( callback ) ;
61
70
return Disposable . Create ( ( ) => { element . UnregisterValueChangedCallback ( callback ) ; } ) ;
62
71
}
72
+ /// <summary>
73
+ /// Binds Element changes to Update Property Values.
74
+ /// Then Initializes Values.
75
+ /// </summary>
76
+ /// <typeparam name="T"></typeparam>
77
+ /// <param name="element">Element with Value Changed Callbacks</param>
78
+ /// <param name="property">Reactive Property that value should change on a Value Changed Callback</param>
79
+ /// <param name="stateIsProperty">Whether Default Value should be Default Property Value</param>
80
+ /// <returns></returns>
81
+ public static IDisposable BindValueChangedWithState < T > ( this INotifyValueChanged < T > element , IReactiveProperty < T > property , bool stateIsProperty = true )
82
+ {
83
+ var d1 = BindValueChanged ( element , property ) ;
84
+ if ( stateIsProperty )
85
+ {
86
+ element . value = property . Value ;
87
+ }
88
+ else
89
+ {
90
+ property . Value = element . value ;
91
+ }
92
+ return d1 ;
93
+ }
63
94
public static IDisposable BindToValueChanged < T > ( this INotifyValueChanged < T > element , IReactiveProperty < T > property )
64
95
{
65
96
return property . SubscribeWithState ( element , ( __property , __element ) =>
66
97
{
67
98
__element . SetValueWithoutNotify ( __property ) ;
68
99
} ) ;
69
100
}
101
+ public static IDisposable BindToValueChangedWithState < T > ( this INotifyValueChanged < T > element , IReactiveProperty < T > property , bool stateIsProperty = true )
102
+ {
103
+ var d1 = BindToValueChanged ( element , property ) ;
104
+ if ( stateIsProperty )
105
+ {
106
+ element . value = property . Value ;
107
+ }
108
+ else
109
+ {
110
+ property . Value = element . value ;
111
+ }
112
+ return d1 ;
113
+ }
70
114
public static IDisposable BindTwoWayValueChanged < T > ( this INotifyValueChanged < T > element , IReactiveProperty < T > property )
71
115
{
72
116
var d1 = BindValueChanged ( element , property ) ;
0 commit comments