Esempio n. 1
0
 internal ScrollTraceRecord(ScrollTraceOp op, VirtualizingStackPanel vsp,
     int vspDepth, int itemIndex, int opDepth, string detail)
 {
     Op = op;
     VSP = vsp;
     VDepth = vspDepth;
     ItemIndex = itemIndex;
     OpDepth = opDepth;
     Detail = detail;
 }
Esempio n. 2
0
 private static bool ShouldIgnore(ScrollTraceOp op, ScrollTracingInfo sti)
 {
     return (op == ScrollTraceOp.NoOp);
 }
Esempio n. 3
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);
                }
            }
Esempio n. 4
0
            internal static void Trace(VirtualizingStackPanel vsp, ScrollTraceOp op, params object[] args)
            {
                ScrollTracingInfo sti = ScrollTracingInfoField.GetValue(vsp);
                ScrollTracer tracer = sti.ScrollTracer;
                Debug.Assert(tracer != null, "Trace called when not tracing");

                if (ShouldIgnore(op, sti))
                    return;

                tracer.AddTrace(vsp, op, sti, args);
            }