protected virtual void ProcessLayoutChanging(LayoutChangedType type) { if (LayoutChanged == null) { return; } if (RaiseEventsImmediately) { LayoutChanged(this, new MyEventArgs { LayoutChangedTypes = new List <LayoutChangedType> { type } }); } else { if (!ChangesCache.Contains(type)) { ChangesCache.Add(type); } if (IsLocked) { return; } IsLocked = true; Dispatcher.BeginInvoke(new Action(() => { IsLocked = false; LayoutChanged(this, new MyEventArgs { LayoutChangedTypes = ChangesCache }); ChangesCache.Clear(); })); } }
void ProcessLayoutChanging(LayoutChangedType type) { if (!LayoutChangedTypes.Contains(type)) { LayoutChangedTypes.Add(type); } if (IsLocked) { return; } IsLocked = true; Dispatcher.BeginInvoke(new Action(() => { IsLocked = false; LayoutChanged(this, new MyEventArgs { LayoutChangedTypes = LayoutChangedTypes }); LayoutChangedTypes.Clear(); })); }