@@ -18,6 +18,9 @@ public class ReactScrollViewManager : ViewParentManager<ScrollViewer>
18
18
{
19
19
private const int CommandScrollTo = 1 ;
20
20
21
+ private readonly IDictionary < ScrollViewer , ScrollViewerData > _scrollViewerData =
22
+ new Dictionary < ScrollViewer , ScrollViewerData > ( ) ;
23
+
21
24
/// <summary>
22
25
/// The name of the view manager.
23
26
/// </summary>
@@ -99,7 +102,16 @@ public void SetBackgroundColor(ScrollViewer view, uint color)
99
102
[ ReactProp ( "scrollEnabled" , DefaultBoolean = true ) ]
100
103
public void SetEnabled ( ScrollViewer view , bool enabled )
101
104
{
102
- view . IsEnabled = enabled ;
105
+ if ( enabled )
106
+ {
107
+ view . VerticalScrollMode = ScrollMode . Auto ;
108
+ view . HorizontalScrollMode = _scrollViewerData [ view ] . HorizontalScrollMode ;
109
+ }
110
+ else
111
+ {
112
+ view . VerticalScrollMode = ScrollMode . Disabled ;
113
+ view . HorizontalScrollMode = ScrollMode . Disabled ;
114
+ }
103
115
}
104
116
105
117
/// <summary>
@@ -112,9 +124,11 @@ public void SetEnabled(ScrollViewer view, bool enabled)
112
124
[ ReactProp ( "horizontal" ) ]
113
125
public void SetHorizontal ( ScrollViewer view , bool horizontal )
114
126
{
115
- view . HorizontalScrollMode = horizontal
127
+ var horizontalScrollMode = horizontal
116
128
? ScrollMode . Auto
117
129
: ScrollMode . Disabled ;
130
+
131
+ view . HorizontalScrollMode = _scrollViewerData [ view ] . HorizontalScrollMode = horizontalScrollMode ;
118
132
}
119
133
120
134
/// <summary>
@@ -255,6 +269,8 @@ public override void RemoveChildAt(ScrollViewer parent, int index)
255
269
/// <param name="view">The view.</param>
256
270
public override void OnDropViewInstance ( ThemedReactContext reactContext , ScrollViewer view )
257
271
{
272
+ _scrollViewerData . Remove ( view ) ;
273
+
258
274
view . ViewChanging -= OnViewChanging ;
259
275
view . DirectManipulationStarted -= OnDirectManipulationStarted ;
260
276
view . DirectManipulationCompleted -= OnDirectManipulationCompleted ;
@@ -292,13 +308,19 @@ public override void ReceiveCommand(ScrollViewer view, int commandId, JArray arg
292
308
/// <returns>The view instance.</returns>
293
309
protected override ScrollViewer CreateViewInstance ( ThemedReactContext reactContext )
294
310
{
295
- return new ScrollViewer
311
+ var scrollViewerData = new ScrollViewerData ( ) ;
312
+
313
+ var scrollViewer = new ScrollViewer
296
314
{
297
315
HorizontalScrollBarVisibility = ScrollBarVisibility . Hidden ,
298
316
HorizontalScrollMode = ScrollMode . Disabled ,
299
317
VerticalScrollBarVisibility = ScrollBarVisibility . Hidden ,
300
318
VerticalScrollMode = ScrollMode . Auto ,
301
319
} ;
320
+
321
+ _scrollViewerData . Add ( scrollViewer , scrollViewerData ) ;
322
+
323
+ return scrollViewer ;
302
324
}
303
325
304
326
/// <summary>
@@ -453,5 +475,10 @@ public override void Dispatch(RCTEventEmitter eventEmitter)
453
475
eventEmitter . receiveEvent ( ViewTag , EventName , _data ) ;
454
476
}
455
477
}
478
+
479
+ class ScrollViewerData
480
+ {
481
+ public ScrollMode HorizontalScrollMode = ScrollMode . Disabled ;
482
+ }
456
483
}
457
484
}
0 commit comments