internal void RefreshUnboundItemProperty(object component) { if (m_unboundItems.Count <= 0 || (component == null)) { return; } var unboundDataItem = UnboundDataItem.GetUnboundDataItem(component); if (unboundDataItem == null) { return; } var dataItem = unboundDataItem.DataItem; if ((dataItem == null) || (dataItem is EmptyDataItem)) { return; } State state; if (m_dataItems.TryGetValue(dataItem, out state) && (state.Refreshing || state.Suspended)) { return; } m_dataItems.Add(dataItem, new State(true, false)); try { foreach (var item in m_unboundItems) { item.Refresh(unboundDataItem); } } finally { state = m_dataItems[dataItem]; if (state.Suspended) { m_dataItems[dataItem] = new State(false, true); } else { m_dataItems.Remove(dataItem); } } }
internal void ResumeUnboundItemPropertyChanged(object component) { if (component == null) { return; } var unboundDataItem = UnboundDataItem.GetUnboundDataItem(component); if (unboundDataItem == null) { return; } var dataItem = unboundDataItem.DataItem; if ((dataItem == null) || (dataItem is EmptyDataItem)) { return; } State state; if (!m_dataItems.TryGetValue(dataItem, out state) || !state.Suspended) { Debug.Fail("The item is not suspended."); return; } if (state.Refreshing) { m_dataItems[dataItem] = new State(true, false); } else { m_dataItems.Remove(dataItem); this.RefreshUnboundItemProperty(dataItem); } }
internal void SuspendUnboundItemPropertyChanged(object component) { if (component == null) { return; } var unboundDataItem = UnboundDataItem.GetUnboundDataItem(component); if (unboundDataItem == null) { return; } var dataItem = unboundDataItem.DataItem; if ((dataItem == null) || (dataItem is EmptyDataItem)) { return; } State state; bool refreshing = false; if (m_dataItems.TryGetValue(dataItem, out state)) { if (state.Suspended) { return; } refreshing = state.Refreshing; } m_dataItems[dataItem] = new State(refreshing, true); }