File tree Expand file tree Collapse file tree 2 files changed +23
-28
lines changed
VirtualListView/Platforms/Windows Expand file tree Collapse file tree 2 files changed +23
-28
lines changed Original file line number Diff line number Diff line change @@ -48,33 +48,27 @@ internal bool IsRecycled
4848 }
4949 }
5050
51+ public bool NeedsView
52+ => VirtualView is null || VirtualView . Handler is null ;
53+
5154 public IView VirtualView { get ; private set ; }
5255
53- public void Update ( PositionInfo positionInfo , IView newView )
56+ public void SetupView ( IView view )
5457 {
55- PositionInfo = positionInfo ;
56-
57- if ( newView is IPositionInfo viewWithPositionInfo )
58- viewWithPositionInfo . Update ( PositionInfo ) ;
59-
60- SwapView ( newView ) ;
58+ if ( VirtualView is null || VirtualView . Handler is null )
59+ {
60+ Content = view . ToPlatform ( MauiContext ) ;
61+ VirtualView = view ;
62+ }
6163 }
6264
63- void SwapView ( IView newView )
65+ public void UpdatePosition ( PositionInfo positionInfo )
6466 {
65- if ( VirtualView == null || VirtualView . Handler == null || Content == null )
66- {
67- Content = newView . ToPlatform ( MauiContext ) ;
68- VirtualView = newView ;
69- }
70- else
71- {
72- var handler = VirtualView . Handler ;
73- newView . Handler = handler ;
74- handler . SetVirtualView ( newView ) ;
75- VirtualView = newView ;
76- }
77- }
67+ PositionInfo = positionInfo ;
68+
69+ if ( VirtualView is IPositionInfo viewWithPositionInfo )
70+ viewWithPositionInfo . Update ( PositionInfo ) ;
71+ }
7872
7973 protected override void OnTapped ( TappedRoutedEventArgs e )
8074 {
Original file line number Diff line number Diff line change @@ -85,16 +85,17 @@ public UIElement GetElement(UI.Xaml.ElementFactoryGetArgs args)
8585 && ( Handler ? . IsItemSelected ( info . SectionIndex , info . ItemIndex ) ?? false ) ;
8686
8787
88- var view = container . VirtualView ?? PositionalViewSelector . ViewSelector ? . CreateView ( info , data ) ;
89-
90- container . Update ( info , view ) ;
91-
92-
88+ if ( container . NeedsView )
89+ {
90+ var virtualView = PositionalViewSelector . ViewSelector ? . CreateView ( info , data ) ;
91+ container . SetupView ( virtualView ) ;
92+ }
9393
94+ container . UpdatePosition ( info ) ;
9495 container . IsRecycled = false ;
95- PositionalViewSelector . ViewSelector ? . RecycleView ( info , data , view ) ;
9696
97- PositionalViewSelector . ViewSelector ? . ViewAttached ( info , view ) ;
97+ PositionalViewSelector . ViewSelector ? . RecycleView ( info , data , container . VirtualView ) ;
98+ PositionalViewSelector . ViewSelector ? . ViewAttached ( info , container . VirtualView ) ;
9899
99100 return container ;
100101 }
You can’t perform that action at this time.
0 commit comments