Beispiel #1
0
        internal double AddOneChild(RealizedItemsInfo info)
        {
            var child = _generator.ContainerFromIndex(_info.Next);

            if (child == null)
            {
                var materialized = _generator.Materialize(_info.Next, _items.ElementAt(_info.Next));
                child = materialized.ContainerControl;
                _panel.Children.Add(child);
                child.Measure(Size.Infinity);
                PdmLogger.Log(2, PdmLogger.IndentEnum.Nothing, $"Add new Item {child.DataContext} to {this} {_info._currentOffset:0.00}");
                if (VirtualizingAverages.AddContainerSize(_groupControl.TemplatedParent, _items.ElementAt(_info.Next), child))
                {
                    _owner.InvalidateMeasure();
                }
            }
            else
            {
                if (child is GroupItem gi)
                {
                    gi.Presenter?.InvalidateMeasure();
                }
                if (_id == 402)
                {
                }
                child.Measure(Size.Infinity);
                PdmLogger.Log(2, PdmLogger.IndentEnum.Nothing, $"Add old Item {child.DataContext} to {this} {_info._currentOffset:0.00}");
                if (VirtualizingAverages.AddContainerSize(_groupControl.TemplatedParent, _items.ElementAt(_info.Next), child))
                {
                    _owner.InvalidateMeasure();
                }
            }
            return(_info.Vert ? child.DesiredSize.Height : child.DesiredSize.Width);
        }