private void delete_item_Click(object sender, RoutedEventArgs e) { property_grid_property to_delete_property = ((property_grid_property)((FrameworkElement)sender).DataContext); int count = to_delete_property.property_owners.Count; for (int i = 0; i < count; ++i) { ((IList)to_delete_property.property_owners[i]).RemoveAt( ((property_grid_item_property_descriptor)to_delete_property.descriptors[i]).item_index ); } Int32 index = to_delete_property.property_parent.sub_properties.IndexOf(to_delete_property); var properties = to_delete_property.property_parent.sub_properties; for (int i = index + 1; i < properties.Count; ++i) { foreach (property_grid_item_property_descriptor desc in properties[i].descriptors) { desc.decrease_item_index(); } } to_delete_property.property_parent.sub_properties.RemoveAt(index); }
private void add_Click(object sender, RoutedEventArgs e) { property_grid_property collection_property = ((property_grid_property)((FrameworkElement)sender).DataContext); property_grid_property property = new property_grid_property(collection_property.owner_property_grid); property.name = "item"; //+((IList)collection_property.value).Count; property.is_collection_item = true; property.property_parent = collection_property; foreach (IList list in collection_property.values) { Type[] generic_types = list.GetType().GetGenericArguments(); if (generic_types != null && generic_types.Length > 0) { list.Add(Activator.CreateInstance(generic_types[0])); } else { list.Add(new Object()); } property.descriptors.Add(new property_grid_item_property_descriptor(property.name, list.Count - 1, list)); property.property_owners.Add(collection_property.value); } collection_property.sub_properties.Add(property); }
private void Button_Clicked(Object sender, RoutedEventArgs e) { property_grid_property prop = ((property_grid_property)((Button)sender).DataContext); if (prop.descriptors[0].PropertyType == typeof(String)) { prop.value = ""; } else { try { prop.value = Activator.CreateInstance(prop.descriptors[0].PropertyType); } catch (MissingMethodException) { prop.value = FormatterServices.GetSafeUninitializedObject(prop.descriptors[0].PropertyType); } } prop.is_multiple_values = false; prop.owner_property_grid.reset(); }