protected virtual void OnCollapse(MemberWrapperEventArgs e) { if (Collapse != null) { Collapse(this, e); } }
internal void RefreshIfExpanded(CellEditorData cellData) { Debug.Assert(cellData != null, "cellData != null"); if (cellData.IsExpanded) { // If the value has changed collapse the expanded cell. Then expand it again, unless the value was // set to null or has become unavailable. if (cellData.Wrapper.ValueIsNullOrUnavailable || cellData.Wrapper.Modified) { MemberWrapperEventArgs args = new MemberWrapperEventArgs(cellData.Wrapper); OnCollapse(args); cellData.IsExpanded = false; if (!cellData.Wrapper.ValueIsNullOrUnavailable) { OnExpand(args); cellData.IsExpanded = true; } } } else { // Needed in case the member has no children to allow the user to try expanding it again. cellData.Children = null; } }
protected virtual void OnExpand(MemberWrapperEventArgs e) { if (Expand != null) { Expand(this, e); } }
private void nameColumn_Expand(object sender, MemberWrapperEventArgs e) { using (new LongRunningMonitor(this)) { int index = m_properties.IndexOf(e.Wrapper); Debug.Assert(index != -1, "index != -1"); Debug.Assert(!e.Wrapper.ValueIsNullOrUnavailable, "Trying to expand a null or unavailable value."); CellEditorData cellData = (CellEditorData)e.Wrapper.Tag; Debug.Assert(!cellData.IsExpanded, "Expanding an already expanded row."); // Create a new GenericWrapper object for the expanded value and get its properties. GenericWrapper genericWrapper = e.Wrapper.CreateWrapper(); Debug.Assert(genericWrapper != null, "CreateWrapper() returned null for the member being expanded."); cellData.Children = genericWrapper.GetMembers(); foreach (MemberWrapper childProperty in cellData.Children) { childProperty.SetValueFormat(m_valueFormat); childProperty.Tag = new CellEditorData(childProperty, cellData.Level + 1, cellData); childProperty.ValueChanged += new EventHandler(m_handler.ItemValueChanged); m_properties.Insert(++index, childProperty); } if (cellData.Children.Count == 0) { ((DataGridExpandableColumn)sender).Invalidate(); } else { ((CellEditorData)cellData.Children[cellData.Children.Count - 1].Tag).IsLastInLevel = true; } } }
protected virtual void OnEditorCommitted(MemberWrapperEventArgs e) { if (EditorCommitted != null) { EditorCommitted(this, e); } }
private void editorColumn_EditorCommitted(object sender, MemberWrapperEventArgs e) { // When the a value is changed in an editor refresh the grid immediately - the change is already // committed, so there's no need to wait for the current grid cell to change. Also raise the // ListChanged event, otherwise if the cell being edited is not expanded it won't be updated // until the user moves away from it. m_properties.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, m_properties.IndexOf(e.Wrapper))); m_itemValueChanged = null; ProcessItemValueChanged(e.Wrapper); }
private void nameColumn_Collapse(object sender, MemberWrapperEventArgs e) { int index = m_properties.IndexOf(e.Wrapper); Debug.Assert(index != -1, "index != -1"); CellEditorData cellData = (CellEditorData)e.Wrapper.Tag; Debug.Assert(cellData.IsExpanded, "Collapsing a row that is not expanded."); int totalRows = cellData.TotalExpandedRows; for (int i = 1; i <= totalRows; i++) { m_properties[index + i].ValueChanged -= new EventHandler(m_handler.ItemValueChanged); } m_properties.RemoveRange(index + 1, totalRows); cellData.Children = null; }