Esempio n. 1
0
        Rect EstimateExtent(Size availableSize, string layoutId)
        {
            UIElement firstRealizedElement = null;
            Rect      firstBounds          = default;
            UIElement lastRealizedElement  = null;
            Rect      lastBounds           = default;
            int       firstDataIndex       = -1;
            int       lastDataIndex        = -1;

            if (m_elementManager.GetRealizedElementCount > 0)
            {
                firstRealizedElement = m_elementManager.GetAt(0);
                firstBounds          = m_elementManager.GetLayoutBoundsForRealizedIndex(0);
                firstDataIndex       = m_elementManager.GetDataIndexFromRealizedRangeIndex(0);

                int last = m_elementManager.GetRealizedElementCount - 1;
                lastRealizedElement = m_elementManager.GetAt(last);
                lastDataIndex       = m_elementManager.GetDataIndexFromRealizedRangeIndex(last);
                lastBounds          = m_elementManager.GetLayoutBoundsForRealizedIndex(last);
            }

            Rect extent = m_algorithmCallbacks.Algorithm_GetExtent(
                availableSize,
                m_context,
                firstRealizedElement,
                firstDataIndex,
                firstBounds,
                lastRealizedElement,
                lastDataIndex,
                lastBounds);

            REPEATER_TRACE_INFO("%*s Extent: (%.0f,%.0f,%.0f,%.0f). \n", m_context.Indent, layoutId, extent.X, extent.Y, extent.Width, extent.Height);
            return(extent);
        }
Esempio n. 2
0
        private Rect EstimateExtent(Size availableSize, string layoutId)
        {
            ILayoutable firstRealizedElement = null;
            Rect        firstBounds          = new Rect();
            ILayoutable lastRealizedElement  = null;
            Rect        lastBounds           = new Rect();
            int         firstDataIndex       = -1;
            int         lastDataIndex        = -1;

            if (_elementManager.GetRealizedElementCount() > 0)
            {
                firstRealizedElement = _elementManager.GetAt(0);
                firstBounds          = _elementManager.GetLayoutBoundsForRealizedIndex(0);
                firstDataIndex       = _elementManager.GetDataIndexFromRealizedRangeIndex(0);;

                int last = _elementManager.GetRealizedElementCount() - 1;
                lastRealizedElement = _elementManager.GetAt(last);
                lastDataIndex       = _elementManager.GetDataIndexFromRealizedRangeIndex(last);
                lastBounds          = _elementManager.GetLayoutBoundsForRealizedIndex(last);
            }

            Rect extent = _algorithmCallbacks.Algorithm_GetExtent(
                availableSize,
                _context,
                firstRealizedElement,
                firstDataIndex,
                firstBounds,
                lastRealizedElement,
                lastDataIndex,
                lastBounds);

            return(extent);
        }
Esempio n. 3
0
        private Rect EstimateExtent(Size availableSize, string layoutId)
        {
            ILayoutable firstRealizedElement = null;
            Rect        firstBounds          = new Rect();
            ILayoutable lastRealizedElement  = null;
            Rect        lastBounds           = new Rect();
            int         firstDataIndex       = -1;
            int         lastDataIndex        = -1;

            if (_elementManager.GetRealizedElementCount() > 0)
            {
                firstRealizedElement = _elementManager.GetAt(0);
                firstBounds          = _elementManager.GetLayoutBoundsForRealizedIndex(0);
                firstDataIndex       = _elementManager.GetDataIndexFromRealizedRangeIndex(0);;

                int last = _elementManager.GetRealizedElementCount() - 1;
                lastRealizedElement = _elementManager.GetAt(last);
                lastDataIndex       = _elementManager.GetDataIndexFromRealizedRangeIndex(last);
                lastBounds          = _elementManager.GetLayoutBoundsForRealizedIndex(last);
            }

            Rect extent = _algorithmCallbacks.Algorithm_GetExtent(
                availableSize,
                _context,
                firstRealizedElement,
                firstDataIndex,
                firstBounds,
                lastRealizedElement,
                lastDataIndex,
                lastBounds);

            Logger.TryGet(LogEventLevel.Verbose, "Repeater")?.Log(this, "{LayoutId} Extent: ({Bounds})", layoutId, extent);
            return(extent);
        }