internal virtual void SetFirst(Vector scrollPos) { FirstInCache = VirtualizingAverages.GetStartIndex(_templatedParent, _panelOffset - _cache.GetBackCacheSize(_tempViewport, _tempAverageItem), _items, Vert); _firstInView = VirtualizingAverages.GetStartIndex(_templatedParent, _panelOffset, _items, Vert); _currentOffset = VirtualizingAverages.GetOffsetForIndex(_templatedParent, FirstInCache, _items, Vert); _numInView = 0; _numInCache = 0; NumInFullView = 0; var av = VirtualizingAverages.GetEstimatedAverage(_templatedParent, _items, Vert); _tempAverageItem = Vert ? av.Height : av.Width; }
internal override void SetFirst(Vector scrollPos) { _firstInView = (int)(Vert ? scrollPos.Y : scrollPos.X); if (_items is IGroupingView gv) { _firstInView = gv.GetLocalItemPosition(_firstInView); } ScrollOffset = (int)(Vert ? scrollPos.Y : scrollPos.X) - _firstInView; _currentOffset = VirtualizingAverages.GetOffsetForIndex(_templatedParent, _firstInView, _items, Vert); FirstInCache = VirtualizingAverages.GetStartIndex(_templatedParent, _currentOffset - _cache.GetBackCacheSize(_tempViewport, _tempAverageItem), _items, Vert); _currentOffset = VirtualizingAverages.GetOffsetForIndex(_templatedParent, FirstInCache, _items, Vert); _numInView = 0; _numInCache = 0; NumInFullView = 0; var av = VirtualizingAverages.GetEstimatedAverage(_templatedParent, _items, Vert); _tempAverageItem = Vert ? av.Height : av.Width; }
public override Size ArrangeOverride(Size finalSize) { PdmLogger.Log(0, PdmLogger.IndentEnum.In, $"Arrange Realized {_realizedChildren} {finalSize} {++_overrideCount} {Owner.Bounds}"); foreach (var container in _realizedChildren) { var control = container.ContainerControl; var startOffset = VirtualizingAverages.GetOffsetForIndex(GroupControl.TemplatedParent, container.Index, Items, Vertical); if (Vertical) { control.Arrange(new Rect(new Point(0, startOffset), new Size(finalSize.Width, control.DesiredSize.Height))); } else { control.Arrange(new Rect(new Point(startOffset, 0), new Size(control.DesiredSize.Width, finalSize.Height))); } } Owner.Panel.Arrange(new Rect(finalSize)); PdmLogger.Log(1, PdmLogger.IndentEnum.Out, $"Arranged Realized {_realizedChildren} {finalSize} {_overrideCount} {Owner.Bounds}"); return(finalSize); }