// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem) { var b = (Binding as Binding).Path.Path; var obj = dataItem as ObjectProperty; if (b == "Name") { var content = new TextBlock(); content.Text = obj.Name; return(content); } else { var content = new TextBlock(); content.Text = EnumItem.ToString(obj.Value); return(content); } }
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem) { var b = (Binding as Binding).Path.Path; if (b == "Name") { return(GenerateElement(cell, dataItem)); } var obj = dataItem as ObjectProperty; if (obj.Value is string) { var tb = new TextBox(); tb.Text = obj.Value as string; tb.LostKeyboardFocus += Tb_LostKeyboardFocus; tb.Tag = obj; return(tb); } else if (obj.Value is Enum) { var cb = new ComboBox(); EnumItem currentItem; cb.ItemsSource = EnumItem.get(obj, out currentItem); if (currentItem != null) { cb.SelectedItem = currentItem; } else { cb.SelectedIndex = 0; } cb.SelectionChanged += Cb_SelectionChanged; cb.Tag = obj; return(cb); } else if (obj.Value is int) { if (obj.flags.HasFlag(PropertyFlags.UpDownSpinner)) { var sp = new IntegerUpDown(); sp.Maximum = (int)obj.max; sp.Minimum = (int)obj.min; sp.Value = (int)obj.Value; sp.ValueChanged += Sp_ValueChanged; sp.Tag = obj; return(sp); } else { var tb = new TextBox(); tb.Text = obj.Value.ToString(); tb.LostKeyboardFocus += Tb_LostKeyboardFocus; tb.Tag = obj; return(tb); } } else if (obj.Value is bool) { var cb = new CheckBox(); cb.IsChecked = (bool)obj.Value; cb.Checked += Cb_CheckedChanged; cb.Unchecked += Cb_CheckedChanged; cb.Tag = obj; return(cb); } return(GenerateElement(cell, dataItem)); }
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public override string ToString() { return(EnumItem.ToString(value)); }