protected void Dirty() { if (layoutState == LayoutState.DIRTY) { return; } else if (layoutState == LayoutState.HAS_NEW_LAYOUT) { throw new InvalidOperationException("Previous layout was ignored! MarkLayoutSeen() was never called."); } layoutState = LayoutState.DIRTY; if (parent != null) { parent.Dirty(); } }