FrameworkElement GetValueEditor(elementDescr element) { FrameworkElement felem = null; switch (element.QName.Name) { case "int": IntegerUpDown numUp = new IntegerUpDown(); numUp.Margin = new Thickness(3); numUp.Increment = 1; numUp.VerticalAlignment = VerticalAlignment.Center; numUp.MinWidth = 50; numUp.CreateBinding(IntegerUpDown.ValueProperty, element, x => { int val = 0; int.TryParse(element.Value, out val); return val; }, (o, v) => { o.Value = v.ToString(); }); felem = numUp; break; case "float": DoubleUpDown doubleUp = new DoubleUpDown(); doubleUp.CultureInfo = System.Globalization.CultureInfo.InvariantCulture; doubleUp.Margin = new Thickness(3); doubleUp.Increment = 0.01f; doubleUp.FormatString = "F3"; doubleUp.VerticalAlignment = VerticalAlignment.Center; doubleUp.MinWidth = 50; doubleUp.CreateBinding(DoubleUpDown.ValueProperty, element, x => { float val = 0; //float.TryParse(element.Value, out val); try { val = XmlConvert.ToSingle(element.Value); }catch(Exception err){ dbg.Error(err); } return val; }, (o, v) => { o.Value = XmlConvert.ToString(v); }); felem = doubleUp; break; case "boolean": CheckBox chBox = new CheckBox(); chBox.Margin = new Thickness(3); chBox.CreateBinding(CheckBox.IsCheckedProperty, element, x => { bool val = false; bool.TryParse(element.Value, out val); return val; }, (o, v) => { o.Value = v.ToString(); }); felem = chBox; break; default: TextBox tbox = new TextBox(); tbox.Margin = new Thickness(3); tbox.CreateBinding(TextBox.TextProperty, element, x => x.Value, (o, v) => { o.Value = v; }); tbox.MinWidth = 50; tbox.VerticalAlignment = System.Windows.VerticalAlignment.Center; felem = tbox; break; } return felem; }