private RecyclingElementFactory GetElementFactory() { var elementFactory = new RecyclingElementFactory(); elementFactory.RecyclePool = new RecyclePool(); elementFactory.Templates["Item"] = SharedHelpers.GetDataTemplate(@"<TextBlock Text='{Binding}' Height='100' />"); return(elementFactory); }
public void ValidateSentinelsDuringInserts() { RunOnUIThread.Execute(() => { var dataSource = new CustomItemsSource(Enumerable.Range(0, 10).ToList()); int getElementCallCount = 0; int recycleElementCallCount = 0; var elementFactory = new RecyclingElementFactoryDerived() { Templates = { { "key", SharedHelpers.GetDataTemplate("<TextBlock Text='{Binding}' Height='100' />") } }, RecyclePool = new RecyclePool(), GetElementFunc = (int index, UIElement owner, UIElement elementFromBase) => { getElementCallCount++; return(elementFromBase); }, ClearElementFunc = (UIElement element, UIElement owner) => recycleElementCallCount++, ValidateElementIndices = false }; var repeater = SetupRepeater(dataSource, elementFactory); getElementCallCount = 0; recycleElementCallCount = 0; Log.Comment("Insert in realized range: Inserting 100 items at index 1"); dataSource.Insert(index: 1, count: 100, reset: false); repeater.UpdateLayout(); var realized = VerifyRealizedRange(repeater, dataSource); Verify.IsGreaterThan(realized, 0); Verify.IsLessThan(getElementCallCount, 6); Verify.IsLessThan(recycleElementCallCount, 6); }); }