Пример #1
0
        /// <summary>
        /// 设置数据
        /// </summary>
        /// <param name="visual"></param>
        /// <param name="datas"></param>
        private static void SetControlData(Visual visual, List <SaveData> datas)
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++)
            {
                Visual childVisual = (Visual)VisualTreeHelper.GetChild(visual, i);
                if (childVisual != null)
                {
                    if (childVisual is TextBox)
                    {
                        var txt = childVisual as TextBox;
                        if (txt.Name != null && !"".Equals(txt.Name))
                        {
                            var data = datas.FirstOrDefault(t => t.ControlId == txt.Name) ?? new SaveData();
                            if (data.ControlValue.IsNullOrEmptyImpl())
                            {
                                txt.SetValue(TextBox.TextProperty, data.ControlValue);
                                //txt.Text = data.ControlValue;
                            }
                        }
                    }
                    else if (childVisual is ComboBox)
                    {
                        var cmb = childVisual as ComboBox;
                        if (cmb.Name != null && !"".Equals(cmb.Name))
                        {
                            var data = datas.FirstOrDefault(t => t.ControlId == cmb.Name) ?? new SaveData();
                            if (data.ControlValue.IsNullOrEmptyImpl())
                            {
                                cmb.Text = data.ControlValue;
                                if (cmb.SelectedIndex == -1 && cmb.Items.Count > 0 && !cmb.IsEditable)
                                {
                                    cmb.SelectedIndex = 0;
                                }

                                // cmb.Text = data.ControlValue;
                            }
                        }
                    }
                    else if (childVisual is RadioButton)
                    {
                        var cmb  = childVisual as RadioButton;
                        var data = datas.FirstOrDefault(t => t.ControlId == cmb.Name);
                        if (data != null && cmb.Name != null && data.ControlValue.IsNullOrEmptyImpl())
                        {
                            bool isCheck = ConvertToBool(data.ControlValue);
                            if (isCheck) //如果是false则不给相应radio赋值,避免不必要的界面交互造成的bug
                            {
                                cmb.IsChecked = isCheck;
                            }
                        }
                    }
                    else if (childVisual is CheckBox)
                    {
                        var cmb  = childVisual as CheckBox;
                        var data = datas.FirstOrDefault(t => t.ControlId == cmb.Name);
                        if (data != null && cmb.Name != null && data.ControlValue != "")
                        {
                            cmb.IsChecked = ConvertToBool(data.ControlValue);
                        }
                    }
                    else if (childVisual is ListBox)
                    {
                        var cmb  = childVisual as ListBox;
                        var data = datas.FirstOrDefault(t => t.ControlId == cmb.Name);
                        if (data != null && cmb.Name != null && data.ControlValue != "")
                        {
                            int index = 0;
                            if (int.TryParse(data.ControlValue, out index))
                            {
                                if (cmb.Items.Count > i)
                                {
                                    cmb.SelectedIndex = index;
                                }
                            }
                        }
                    }
                    else if (visual is UserControl && visual is IControlDataProvider)
                    {
                        Control control = visual as Control;
                        var     data    = datas.FirstOrDefault(t => t.ControlId == control.Name);
                        if (data != null && control.Name != null && data.ControlValue != "")
                        {
                            IControlDataProvider g = visual as IControlDataProvider;
                            g.SetControlData(data.ControlValue);
                        }
                    }
                    else
                    {
                        SetControlData(childVisual, datas);
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 获取数据
        /// </summary>
        /// <param name="visual"></param>
        /// <param name="datas"></param>
        private static void GetControlData(Visual visual, List <SaveData> datas)
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(visual); i++)
            {
                Visual childVisual = (Visual)VisualTreeHelper.GetChild(visual, i);
                if (childVisual != null)
                {
                    if (childVisual is TextBox)
                    {
                        var txt = childVisual as TextBox;
                        if ("".Equals(txt.Name) || txt.Name.Contains("_"))
                        {
                            continue;
                        }
                        datas.Add(new SaveData("", "TextBox", txt.Name, txt.Text));
                    }
                    else if (childVisual is ComboBox)
                    {
                        var cmb = childVisual as ComboBox;
                        if ("".Equals(cmb.Name) || cmb.Name.Contains("_"))
                        {
                            continue;
                        }
                        datas.Add(new SaveData("", "ComboBox", cmb.Name, cmb.Text));
                    }
                    else if (childVisual is RadioButton)
                    {
                        var cmb = childVisual as RadioButton;
                        if ("".Equals(cmb.Name) || cmb.Name.Contains("_"))
                        {
                            continue;
                        }
                        datas.Add(new SaveData("", "RadioButton", cmb.Name, cmb.IsChecked.ToString()));
                    }
                    else if (childVisual is CheckBox)
                    {
                        var cmb = childVisual as CheckBox;
                        if ("".Equals(cmb.Name) || cmb.Name.Contains("_"))
                        {
                            continue;
                        }
                        datas.Add(new SaveData("", "CheckBox", cmb.Name, cmb.IsChecked.ToString()));
                    }
                    else if (childVisual is ListBox)
                    {
                        var cmb = childVisual as ListBox;
                        if ("".Equals(cmb.Name) || cmb.Name.Contains("_"))
                        {
                            continue;
                        }
                        datas.Add(new SaveData("", "ListBox", cmb.Name, cmb.SelectedIndex.ToString()));
                    }
                    else if (visual is UserControl && visual is IControlDataProvider)
                    {
                        Control control = visual as Control;
                        if ("".Equals(control.Name) || control.Name.Contains("_"))
                        {
                            continue;
                        }
                        IControlDataProvider g = visual as IControlDataProvider;
                        datas.Add(new SaveData("", "IControlDataProvider", control.Name, g.GetControlData()));
                    }

                    GetControlData(childVisual, datas);
                }
            }
        }