Skip to content

Commit bbf31a3

Browse files
committed
Add needsview to windows for consistency
1 parent 79d7ff5 commit bbf31a3

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

VirtualListView/Platforms/Windows/IrElementContainer.cs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff 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
{

VirtualListView/Platforms/Windows/IrElementFactory.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)