private void UpdateObject(object e) { int index = lbxEnteties.Items.IndexOf(e); Type temp5 = e.GetType(); if (temp5 == typeof(String)) { foreach (PropertyEditor edi in spnlControls.Children) { foreach (Control c in edi.ContentGrid.Children) { if (c.GetType() == typeof(TextboxExt)) { TextBox t = c as TextBox; int ei = ObjectList.IndexOf(e); ObjectList[ei] = t.Text;// = t.Text; } } } lbxEnteties.Items.Refresh(); return; } foreach (PropertyEditor ed in spnlControls.Children) { foreach (Control c in ed.ContentGrid.Children) { if (c.GetType() == typeof(System.Windows.Controls.Label)) { continue; } if (c.GetType() == typeof(ButtonExt)) { ButtonExt bx = c as ButtonExt; PropertyInfo pi = lbxEnteties.Items[index].GetType().GetProperty(bx.PropertyName); if (bx.ObjectToModyfy != null) { pi.SetValue(lbxEnteties.Items[index], bx.ObjectToModyfy, null); } } else if (c.GetType() == typeof(TextboxExt)) { TextboxExt bx = c as TextboxExt; PropertyInfo pi = lbxEnteties.Items[index].GetType().GetProperty(bx.PropertyName); if (bx.ObjectToModyfy != null) { if (pi.PropertyType.Name.ToLower() == "string") { pi.SetValue(lbxEnteties.Items[index], bx.Text, null); } else if (pi.PropertyType.Name.ToLower() == "int32") { string temp = bx.Text.Replace(",", ".");//; pi.SetValue(lbxEnteties.Items[index], Convert.ToInt32(temp), null); } else if (pi.PropertyType.Name.ToLower() == "double") { string temp = bx.Text.Replace(".", ","); pi.SetValue(lbxEnteties.Items[index], Convert.ToDouble(temp), null); } else if (pi.PropertyType.Name.ToLower() == "float") { string temp = bx.Text.Replace(".", ","); pi.SetValue(lbxEnteties.Items[index], Convert.ToDouble(temp), null); } } } else if (c.GetType() == typeof(CheckBoxExt)) { CheckBoxExt bx = c as CheckBoxExt; PropertyInfo pi = lbxEnteties.Items[index].GetType().GetProperty(bx.PropertyName); pi.SetValue(lbxEnteties.Items[index], bx.IsChecked, null); } else if (c.GetType() == typeof(ComboBoxExt)) { ComboBoxExt bx = c as ComboBoxExt; PropertyInfo pin = lbxEnteties.Items[index].GetType().GetProperty(bx.PropertyName); if (bx.ObjectToModyfy != null) { FieldInfo fofi = bx.SelectedItem as FieldInfo;// NUllable??? if (fofi != null) { string name = fofi.Name; Type genType = GetGenericType(pin.GetValue(lbxEnteties.Items[index], null)); pin.SetValue(lbxEnteties.Items[index], Enum.Parse(genType, name), null);//pin.PropertyType } } } } } lbxEnteties.Items.Refresh(); }
public void Reflect() { PropertyInfo[] pit; if (theObject != null) { pit = theObject.GetType().GetProperties(); } else { pit = objectType.GetProperties(); } foreach (PropertyInfo pi in pit) { if (pi.CanWrite) { PropertyEditor ed = new PropertyEditor(); // get type and cast selected object to this type? ed.lblName.Content = pi.Name; //Type type = theObject.GetType().GetProperty(pi.Name).PropertyType; ed.lblName.ToolTip = pi.PropertyType.IsPublic.ToString(); UIElement ue = null; UIElement ue2 = null; switch (pi.PropertyType.Name.ToLower()) { case "string": { TextboxExt tb = new TextboxExt(); object obj = pi.GetValue(theObject, null); if (obj != null) { tb.Text = obj.ToString(); tb.ObjectToModyfy = obj; } tb.PropertyName = pi.Name; tb.ToolTip = pi.PropertyType.Name; tb.Height = 20; ue = tb; break; } case "list`1": { TextboxExt tb = new TextboxExt(); Type tTemp = GetGenericType(pi.GetValue(theObject, null)); tb.Text = tTemp.Name; tb.ToolTip = "(" + tTemp.Name + ") list<>"; tb.PropertyName = pi.Name; tb.Height = 20; tb.IsEnabled = false; ButtonExt btn = new ButtonExt(); btn.ObjectToModyfy = pi.GetValue(theObject, null); btn.PropertyName = pi.Name; btn.Content = "[..]"; btn.HorizontalAlignment = HorizontalAlignment.Left; btn.Click += new RoutedEventHandler(btn_Click); btn.Width = 20; ue2 = btn; ue = tb; break; } case "double": { TextboxExt tb = new TextboxExt(); tb.Text = theObject == null ? null : pi.GetValue(theObject, null).ToString(); tb.PropertyName = pi.Name; tb.ObjectToModyfy = theObject == null ? null : pi.GetValue(theObject, null); tb.Height = 20; tb.ToolTip = pi.PropertyType.Name; ue = tb; break; } case "int32": { TextboxExt tb = new TextboxExt(); tb.Text = pi.GetValue(theObject, null).ToString(); tb.PropertyName = pi.Name; tb.ObjectToModyfy = pi.GetValue(theObject, null); tb.Height = 20; tb.ToolTip = pi.PropertyType.Name; ue = tb; break; } case "boolean": { CheckBoxExt chk = new CheckBoxExt(); chk.PropertyName = pi.Name; object obj = pi.GetValue(theObject, null); chk.ObjectToModyfy = obj; chk.IsChecked = (bool)obj; chk.ToolTip = pi.PropertyType.Name; ue = chk; break; } default: { if (pi.PropertyType.IsEnum) { ComboBoxExt bx = new ComboBoxExt(); bx.PropertyName = pi.Name; bx.DisplayMemberPath = "Name"; bx.ToolTip = pi.PropertyType.Name; foreach (FieldInfo feif in pi.PropertyType.GetFields()) { if (feif.Name != "value__") { bx.Items.Add(feif); } } bx.ObjectToModyfy = pi.GetValue(theObject, null); bx.SelectedItem = pi.PropertyType.GetField(pi.GetValue(theObject, null).ToString()); ue = bx; } else if (pi.PropertyType.IsGenericType && pi.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) { TextBox tb = new TextBox(); Type tTemp = GetGenericType(pi.GetValue(theObject, null)); Type propType = pi.PropertyType; if (propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof(Nullable <>)) { Type[] typeCol = propType.GetGenericArguments(); Type nullableType; if (typeCol.Length > 0) { nullableType = typeCol[0]; if (nullableType.BaseType == typeof(Enum)) { ComboBox bx = new ComboBox(); foreach (FieldInfo feif in nullableType.GetFields()) { if (feif.Name != "value__") { bx.Items.Add(feif); } } ue = bx; } } } } else { if (pi.PropertyType == typeof(object)) { } } break; } } if (ue != null) { // ue.SetValue(Grid.ColumnProperty, 0); ue.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Center); ed.ContentGrid.Children.Add(ue); if (ue2 != null) { //ue2.SetValue(Grid.ColumnProperty, 0); ue2.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Center); ed.ContentGrid.Children.Add(ue2); } } spnlControls.Children.Add(ed); } } }
public void Reflect() { spnlControls.Children.Clear(); if (lbxEnteties.SelectedItem != null) { Type temp = lbxEnteties.SelectedItem.GetType(); if (temp == typeof(String)) { PropertyEditor ed = new PropertyEditor(); TextboxExt tb = new TextboxExt(); tb.Width = 150; tb.ObjectToModyfy = lbxEnteties.SelectedItem.ToString(); tb.Text = lbxEnteties.SelectedItem.ToString(); UIElement ue = tb; ue.SetValue(Grid.ColumnProperty, 1); ue.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Center); ed.ContentGrid.Children.Add(ue); spnlControls.Children.Add(ed); return; } foreach (PropertyInfo fi in lbxEnteties.SelectedItem.GetType().GetProperties()) { if (fi.CanWrite) { Type type = fi.PropertyType.GetType();; // get type and cast selected object to this type? PropertyEditor ed = new PropertyEditor(); ed.lblName.Content = fi.Name; ed.lblName.ToolTip = fi.PropertyType.IsPublic.ToString(); UIElement ue = null; UIElement ue2 = null; switch (fi.PropertyType.Name.ToLower()) { case "string": { TextboxExt tb = new TextboxExt(); object obj = fi.GetValue(lbxEnteties.SelectedItem, null); if (obj != null) { tb.Text = obj.ToString(); tb.ObjectToModyfy = obj; } else { tb.ObjectToModyfy = ""; } tb.PropertyName = fi.Name; tb.ToolTip = fi.PropertyType.Name; tb.Height = 20; ue = tb; break; } case "list`1": { TextboxExt tb = new TextboxExt(); Type tTemp = GetGenericType(fi.GetValue(lbxEnteties.SelectedItem, null)); tb.PropertyName = fi.Name; tb.Text = tTemp.Name; tb.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); tb.Height = 20; tb.ToolTip = "(" + tTemp.Name + ") list<>"; // tb.IsEnabled = false; ButtonExt btn = new ButtonExt(); btn.Tag = fi.GetValue(lbxEnteties.SelectedItem, null); btn.PropertyName = fi.Name; btn.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); btn.Content = "[..]"; btn.HorizontalAlignment = HorizontalAlignment.Left; btn.Click += new RoutedEventHandler(btn_Click); btn.Width = 20; ue2 = btn; ue = tb; break; } case "double": { TextboxExt tb = new TextboxExt(); tb.Text = fi.GetValue(lbxEnteties.SelectedItem, null).ToString(); tb.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); if (tb.ObjectToModyfy == null) { tb.ObjectToModyfy = ""; } tb.Height = 20; tb.PropertyName = fi.Name; tb.ToolTip = fi.PropertyType.Name; ue = tb; break; } case "int32": { TextboxExt tb = new TextboxExt(); tb.Text = fi.GetValue(lbxEnteties.SelectedItem, null).ToString(); tb.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); if (tb.ObjectToModyfy == null) { tb.ObjectToModyfy = ""; } tb.Height = 20; tb.ToolTip = fi.PropertyType.Name; tb.PropertyName = fi.Name; ue = tb; break; } case "boolean": { CheckBoxExt chk = new CheckBoxExt(); chk.IsChecked = (bool)fi.GetValue(lbxEnteties.SelectedItem, null); chk.ToolTip = fi.PropertyType.Name; chk.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); if (chk.ObjectToModyfy == null) { chk.ObjectToModyfy = false; } chk.PropertyName = fi.Name; ue = chk; break; } default: { if (fi.PropertyType.IsEnum) { ComboBoxExt bx = new ComboBoxExt(); bx.DisplayMemberPath = "Name"; bx.ToolTip = fi.PropertyType.Name; bx.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); bx.PropertyName = fi.Name; foreach (FieldInfo feif in fi.PropertyType.GetFields()) { if (feif.Name != "value__") { bx.Items.Add(feif); } } bx.SelectedItem = fi.GetValue(lbxEnteties.SelectedItem, null); ue = bx; } else if (fi.PropertyType.IsGenericType && fi.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>)) { TextboxExt tb = new TextboxExt(); Type tTemp = GetGenericType(fi.GetValue(lbxEnteties.SelectedItem, null)); tb.PropertyName = fi.Name; tb.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); Type propType = fi.PropertyType; if (propType.IsGenericType && propType.GetGenericTypeDefinition() == typeof(Nullable <>)) { Type[] typeCol = propType.GetGenericArguments(); Type nullableType; if (typeCol.Length > 0) { nullableType = typeCol[0]; if (nullableType.BaseType == typeof(Enum)) { ComboBoxExt bx = new ComboBoxExt(); bx.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); bx.PropertyName = fi.Name; foreach (FieldInfo feif in nullableType.GetFields()) { if (feif.Name != "value__") { bx.Items.Add(feif); } } ue = bx; } } } } else { ButtonExt btn = new ButtonExt(); btn.PropertyName = fi.Name; btn.Content = fi.Name; btn.ObjectToModyfy = fi.GetValue(lbxEnteties.SelectedItem, null); btn.EditingType = fi.PropertyType; btn.Click += new RoutedEventHandler(btn_ClickOeditor); ue = btn; } break; } } if (ue != null) { ue.SetValue(Grid.ColumnProperty, 1); ue.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Center); ed.ContentGrid.Children.Add(ue); if (ue2 != null) { ue2.SetValue(Grid.ColumnProperty, 2); ue2.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Center); ed.ContentGrid.Children.Add(ue2); } } if (ed != null) { spnlControls.Children.Add(ed); } } } } }