Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Commit

Permalink
Fix rebase conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
hartez committed Jun 20, 2020
1 parent 58f419e commit 384f6ac
Showing 1 changed file with 12 additions and 30 deletions.
42 changes: 12 additions & 30 deletions Xamarin.Forms.Platform.UAP/CollectionView/ItemContentControl.cs
Expand Up @@ -9,7 +9,7 @@ namespace Xamarin.Forms.Platform.UWP
{
public class ItemContentControl : ContentControl
{
View _view;
VisualElement _visualElement;
IVisualElementRenderer _renderer;
DataTemplate _currentTemplate;

Expand Down Expand Up @@ -105,11 +105,11 @@ protected override void OnContentChanged(object oldContent, object newContent)
{
base.OnContentChanged(oldContent, newContent);

if (oldContent != null && _view != null)
_view.MeasureInvalidated -= OnViewMeasureInvalidated;
if (oldContent != null && _visualElement != null)
_visualElement.MeasureInvalidated -= OnViewMeasureInvalidated;

if (newContent != null && _view != null)
_view.MeasureInvalidated += OnViewMeasureInvalidated;
if (newContent != null && _visualElement != null)
_visualElement.MeasureInvalidated += OnViewMeasureInvalidated;
}

internal void Realize()
Expand All @@ -130,46 +130,28 @@ internal void Realize()
return;
}

_view = FormsDataTemplate.CreateContent(dataContext, container) as View;
_view.BindingContext = dataContext;
_renderer = Platform.CreateRenderer(_view);
Platform.SetRenderer(_view, _renderer);

Content = _renderer.ContainerElement;

itemsView?.AddLogicalChild(_view);
if (_renderer?.ContainerElement == null)
{
var view = FormsDataTemplate.CreateContent(dataContext, container) as View;
view.BindingContext = dataContext;
_renderer = Platform.CreateRenderer(view);
Platform.SetRenderer(view, _renderer);
Content = _renderer.ContainerElement;
itemsView?.AddLogicalChild(view);
VisualElement visualElement;

if (_renderer?.ContainerElement == null || _currentTemplate != formsTemplate)
{
// If the content has never been realized (i.e., this is a new instance),
// or if we need to switch DataTemplates (because this instance is being recycled)
// then we'll need to create the content from the template
visualElement = formsTemplate.CreateContent(dataContext, container) as VisualElement;
visualElement.BindingContext = dataContext;
_renderer = Platform.CreateRenderer(visualElement);
Platform.SetRenderer(visualElement, _renderer);
_visualElement = formsTemplate.CreateContent(dataContext, container) as VisualElement;
_visualElement.BindingContext = dataContext;
_renderer = Platform.CreateRenderer(_visualElement);
Platform.SetRenderer(_visualElement, _renderer);

// Keep track of the template in case this instance gets reused later
_currentTemplate = formsTemplate;
}
else
{
// We are reusing this ItemContentControl and we can reuse the Element
visualElement = _renderer.Element;
visualElement.BindingContext = dataContext;
_visualElement = _renderer.Element;
_visualElement.BindingContext = dataContext;
}

Content = _renderer.ContainerElement;
itemsView?.AddLogicalChild(visualElement);
itemsView?.AddLogicalChild(_visualElement);
}

internal void UpdateIsSelected(bool isSelected)
Expand Down

0 comments on commit 384f6ac

Please sign in to comment.