FrameworkElement CreateTextEditor(ItemList.SimpleItem sitem) { var tedit = new TextBox() { Text = sitem.value, MinWidth = 50, VerticalAlignment = VerticalAlignment.Center }; tedit.SetUpdateTrigger( TextBox.TextProperty, (string v) => { sitem.value = v; } ); return(tedit); }
FrameworkElement GetSimpleEditorCtrl(XmlSchemaType xtype, string name, ItemList.SimpleItem sitem) { StackPanel spanel = new StackPanel(); spanel.Orientation = Orientation.Horizontal; TextBlock tblock = new TextBlock(); tblock.Margin = new Thickness(3); tblock.Text = name; tblock.MinWidth = 150; tblock.Foreground = Brushes.DarkGray; tblock.FontWeight = FontWeights.Bold; tblock.VerticalAlignment = System.Windows.VerticalAlignment.Center; spanel.Children.Add(tblock); spanel.Children.Add(GetTypeEditor(xtype, sitem)); return(spanel); }
public FrameworkElement GetSimpleItemsControl() { StackPanel spanel = new StackPanel(); spanel.Orientation = Orientation.Vertical; var simplelist = InitSimpleItems(); simplelist.Where(x => x.isPresent).ForEach(x => { var sitem = config.parameters.simpleItem.FirstOrDefault(si => si.name == x.xname); if (sitem != null) { spanel.Children.Add(GetSimpleEditorCtrl(x.xtype, sitem.name, sitem)); } }); simplelist.Where(x => !x.isPresent).ForEach(x => { var sitem = new ItemList.SimpleItem() { name = x.xname, value = "" }; FrameworkElement elem = GetSimpleEditorCtrl(x.xtype, x.xname, sitem); CheckBox chBox = new CheckBox(); chBox.Margin = new Thickness(40, 0, 0, 0); chBox.Content = "Is element enabled"; chBox.CreateBinding(CheckBox.IsCheckedProperty, (itemDescr)x, s => { elem.IsEnabled = s.isPresent; return(s.isPresent); }, (o, v) => { o.isPresent = v; if (v) { elem.IsEnabled = true; if (config.parameters != null && config.parameters.simpleItem != null) { var items = config.parameters.simpleItem; config.parameters.simpleItem = items.Append(sitem).ToArray(); } else { if (config.parameters == null) { config.parameters = new global::onvif.services.ItemList(); } config.parameters.simpleItem = new ItemList.SimpleItem[] { sitem }; } } else { elem.IsEnabled = false; if (config.parameters.simpleItem.Contains(sitem)) { int count = config.parameters.simpleItem.Count(); var arr = new ItemList.SimpleItem[count - 1]; int cnt = 0; for (int i = 0; i < count; i++) { if (config.parameters.simpleItem[i] != sitem) { arr[cnt] = config.parameters.simpleItem[i]; cnt++; } } config.parameters.simpleItem = arr; } } }); StackPanel tmppanel = new StackPanel(); tmppanel.Orientation = Orientation.Horizontal; tmppanel.Children.Add(elem); tmppanel.Children.Add(chBox); spanel.Children.Add(tmppanel); }); return(spanel); }
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); }