FrameworkElement GetTypeEditor(XmlSchemaType xtype, ItemList.SimpleItem sitem) { FrameworkElement felement = null; if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Boolean), XmlSchemaDerivationMethod.All)) { try { var val = XmlConvert.ToBoolean(sitem.value); felement = new CheckBox() { IsChecked = val, Margin = new Thickness(3) }; felement.SetUpdateTrigger( CheckBox.IsCheckedProperty, (bool v) => { sitem.value = XmlConvert.ToString(v); } ); } catch { felement = CreateTextEditor(sitem); } } else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Integer), XmlSchemaDerivationMethod.All)) { try { var val = XmlConvert.ToInt32(sitem.value); felement = new IntegerUpDown() { Value = val, Margin = new Thickness(3), Increment = 1, VerticalAlignment = VerticalAlignment.Center, MinWidth = 50 }; felement.SetUpdateTrigger( IntegerUpDown.ValueProperty, (int v) => { sitem.value = v.ToString(); } ); } catch { felement = CreateTextEditor(sitem); } } else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Float), XmlSchemaDerivationMethod.All)) { try { var val = XmlConvert.ToDouble(sitem.value); felement = new DoubleUpDown() { Value = val, CultureInfo = System.Globalization.CultureInfo.InvariantCulture, Margin = new Thickness(3), Increment = 0.1, FormatString = "F1", VerticalAlignment = VerticalAlignment.Center, MinWidth = 50 }; felement.SetUpdateTrigger( DoubleUpDown.ValueProperty, (double v) => { sitem.value = v.ToString(); } ); } catch { felement = CreateTextEditor(sitem); } } else if (XmlSchemaType.IsDerivedFrom(xtype, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Double), XmlSchemaDerivationMethod.All)) { try { var val = XmlConvert.ToDouble(sitem.value); felement = new DoubleUpDown() { Value = val, CultureInfo = System.Globalization.CultureInfo.InvariantCulture, Margin = new Thickness(3), Increment = 0.1, FormatString = "F2", VerticalAlignment = VerticalAlignment.Center, MinWidth = 50 }; felement.SetUpdateTrigger( DoubleUpDown.ValueProperty, (double v) => { sitem.value = v.ToString(); } ); } catch { felement = CreateTextEditor(sitem); } } else { felement = CreateTextEditor(sitem); } return felement; }