コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }