protected void Invalidate(InvalidateMode mode) { if (_layoutSuspended) { return; } if (mode == InvalidateMode.Measure) { _arrangeIsDirty = true; _renderIsDirty = true; if (!_measureIsDirty) { _measureIsDirty = true; Parent?.Invalidate(mode); Invalidated?.Invoke(this, new InvalidatedEventArgs(mode)); } } else if (mode == InvalidateMode.Arrange) { _renderIsDirty = true; if (!_arrangeIsDirty) { _arrangeIsDirty = true; Parent?.Invalidate(mode); Invalidated?.Invoke(this, new InvalidatedEventArgs(mode)); } } else if (mode == InvalidateMode.Render) { if (!_renderIsDirty) { _renderIsDirty = true; Parent?.Invalidate(mode); Invalidated?.Invoke(this, new InvalidatedEventArgs(mode)); } } }
public InvalidatedEventArgs(InvalidateMode mode) { Mode = mode; }
/// <summary> /// Indicates that the contents of the CanvasControl need to be redrawn. /// </summary> /// <param name="mode"> invalidate mode </param> public void Invalidate(InvalidateMode mode = InvalidateMode.None) => this.InvalidateAction?.Invoke(mode);