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);
        }
Beispiel #3
0
        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();
        }