public void Clear() { _handled = false; _mode = DeferringMode.Off; _deferredList = null; _deferredTreeDepth = -1; }
public XamlNodeList CollectTemplateList() { XamlNodeList retValue = _deferredList; _deferredList = null; _mode = DeferringMode.Off; return(retValue); }
private void StartDeferredList() { // the list may have been created already by SetLineInfo if (_deferredList == null) { _deferredList = new XamlNodeList(_context.SchemaContext); _deferredWriter = _deferredList.Writer; _deferredLineInfoConsumer = _deferredWriter as IXamlLineInfoConsumer; _deferredTreeDepth = 0; } }
public override void WriteValue(object value) { _handled = false; switch (_mode) { case DeferringMode.Off: break; case DeferringMode.TemplateReady: throw new XamlInternalException(SR.Get(SRID.TemplateNotCollected, "WriteValue")); case DeferringMode.TemplateStarting: // This handles the case of SM template; V object; EM Debug.Assert(_deferredTreeDepth == 0); if (value is XamlNodeList) { _deferredList = (XamlNodeList)value; _mode = DeferringMode.TemplateReady; _handled = true; } else { StartDeferredList(); _mode = DeferringMode.TemplateDeferring; goto case DeferringMode.TemplateDeferring; } break; case DeferringMode.TemplateDeferring: _deferredWriter.WriteValue(value); _handled = true; break; default: throw new XamlInternalException(SR.Get(SRID.MissingCase, _mode.ToString(), "WriteValue")); } }