Ejemplo n.º 1
0
            private void AddTrace(VirtualizingStackPanel vsp, ScrollTraceOp op, ScrollTracingInfo sti, params object[] args)
            {
                ScrollTraceRecord record = new ScrollTraceRecord(op, vsp, sti.Depth, sti.ItemIndex, _depth, BuildDetail(args));
                _traceList.Add(record);

                switch (op)
                {
                    default:
                        break;

                    case ScrollTraceOp.BeginMeasure:
                        Push();
                        break;

                    case ScrollTraceOp.EndMeasure:
                        Pop(record);
                        record.Snapshot = vsp.TakeSnapshot();
                        Flush(sti.Depth);
                        break;

                    case ScrollTraceOp.BeginArrange:
                        Push();
                        break;

                    case ScrollTraceOp.EndArrange:
                        Pop(record);
                        record.Snapshot = vsp.TakeSnapshot();
                        Flush(sti.Depth);
                        break;

                    case ScrollTraceOp.BSetAnchor:
                        Push();
                        break;

                    case ScrollTraceOp.ESetAnchor:
                        Pop(record);
                        break;

                    case ScrollTraceOp.BOnAnchor:
                        Push();
                        break;

                    case ScrollTraceOp.ROnAnchor:
                        Pop(record);
                        break;

                    case ScrollTraceOp.SOnAnchor:
                        Pop();
                        break;

                    case ScrollTraceOp.EOnAnchor:
                        Pop(record);
                        break;

                    case ScrollTraceOp.RecycleChildren:
                    case ScrollTraceOp.RemoveChildren:
                        record.RevirtualizedChildren = args[2] as List<String>;
                        break;
                }

                if (_flushDepth < 0)
                {
                    Flush(_flushDepth);
                }
            }
Ejemplo n.º 2
0
 private void Pop(ScrollTraceRecord record)  { --_depth; record.ChangeOpDepth(-1); }