private void InsertNewItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            TimeSpan du = TimeSpan.FromMilliseconds(400);
            AddOrDeleteButton tb = sender as AddOrDeleteButton;

            DependencyObject dListView = tb;
            DependencyObject dListViewItem = tb;
            DependencyObject scrollViewer = tb;
            while (!(dListView is 一个一级部件))
            {
                dListView = VisualTreeHelper.GetParent(dListView);
            }
            while (!(dListViewItem is 一个二级部件))
            {
                dListViewItem = VisualTreeHelper.GetParent(dListViewItem);
            }
            一个一级部件 ListView = dListView as 一个一级部件;
            一个二级部件 ListViewItem = dListViewItem as 一个二级部件;

            一个二级部件 toAddListViewItem = new 一个二级部件(false);

            int index = ListView.二级部件集合.IndexOf(ListViewItem);
            ListView.二级部件集合.Insert(index, toAddListViewItem);

            DoubleAnimation scaleAnim = new DoubleAnimation(0, 1, du);
            ScaleTransform scaleTrans = new ScaleTransform();
            toAddListViewItem.RenderTransform = scaleTrans;
            scaleTrans.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnim);
        }
        private void AddNewItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            TimeSpan du = TimeSpan.FromMilliseconds(400);
            AddOrDeleteButton tb = sender as AddOrDeleteButton;
            RotateTransform rotateTrans = new RotateTransform();
            tb.RenderTransform = rotateTrans;
            DoubleAnimation rotateAnim = new DoubleAnimation(45, du);
            rotateTrans.BeginAnimation(RotateTransform.AngleProperty, rotateAnim);
            tb.MouseLeftButtonUp -= AddNewItem_MouseLeftButtonUp;
            tb.MouseLeftButtonUp += DeleteItem;
            DependencyObject dListView = tb;
            DependencyObject scrollViewer = tb;
            while (!(dListView is 一个一级部件))
            {
                dListView = VisualTreeHelper.GetParent(dListView);
            }
            while (!(scrollViewer is ScrollViewer))
            {
                scrollViewer = VisualTreeHelper.GetParent(scrollViewer);
            }
            一个一级部件 ListView = dListView as 一个一级部件;

            一个二级部件 ListViewItem = new 一个二级部件();
            ListView.二级部件集合.Add(ListViewItem);
            
            (scrollViewer as ScrollViewer).ScrollToBottom();
            ScaleTransform scaleTransform = new ScaleTransform();
            ListViewItem.RenderTransform = scaleTransform;
            DoubleAnimation scaleAnim = new DoubleAnimation(0, 1, du);
            scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnim);

            double tWidth = tb.ActualWidth;
            InsertNewItem.Width = 0;
            InsertNewItem.BeginAnimation(AddOrDeleteButton.WidthProperty, new DoubleAnimation(0, tWidth, TimeSpan.FromMilliseconds(300)));
            InsertNewItem.Visibility = Visibility.Visible;
        }
        private void 导入桥梁组成结构(XmlNode 桥梁组成结构, ObservableCollection<一个一级部件> 一级部件集合)
        {
            try
            {
                一级部件集合.Clear();
                #region 桥梁组成一级部件
                foreach (XmlNode 桥梁组成一级部件 in 桥梁组成结构)
                {
                    一个一级部件 s = new 一个一级部件(false);
                    一级部件集合.Add(s);
                    s.二级部件集合.Clear();
                    s.桥梁组成一级部件参数.部件名称 = 桥梁组成一级部件.Attributes["部件名称"].Value;
                    bool sbResult;
                    s.桥梁组成一级部件参数.是否主要部件 = bool.TryParse(桥梁组成一级部件.Attributes["是否主要部件"].Value, out sbResult) ? sbResult : false;
                    double sdResult;
                    s.桥梁组成一级部件参数.部件权重 = double.TryParse(桥梁组成一级部件.Attributes["部件权重"].Value, out sdResult) ? sdResult : 0;
                    bool sb2Result;
                    s.桥梁组成一级部件参数.IsExist = bool.TryParse(桥梁组成一级部件.Attributes["IsExist"].Value, out sb2Result) ? sb2Result : false;

                    #region 桥梁组成二级部件
                    foreach (XmlNode 桥梁组成二级部件 in 桥梁组成一级部件)
                    {
                        一个二级部件 ss = new 一个二级部件(false);
                        s.二级部件集合.Add(ss);
                        ss.指标集合.Clear();
                        bool ssbResult;
                        ss.桥梁组成二级部件参数.是否主要部件 = bool.TryParse(桥梁组成二级部件.Attributes["是否主要部件"].Value, out ssbResult) ? ssbResult : false;
                        int ssiResult;
                        ss.桥梁组成二级部件参数.构件数 = int.TryParse(桥梁组成二级部件.Attributes["构件数"].Value, out ssiResult) ? ssiResult : 1;
                        ss.桥梁组成二级部件参数.部件名称 = 桥梁组成二级部件.Attributes["部件名称"].Value;
                        double ssdResult;
                        ss.桥梁组成二级部件参数.部件权重 = double.TryParse(桥梁组成二级部件.Attributes["部件权重"].Value, out ssdResult) ? ssdResult : 0;
                        bool ssb2Result;
                        ss.桥梁组成二级部件参数.IsExist = bool.TryParse(桥梁组成二级部件.Attributes["IsExist"].Value, out ssb2Result) ? ssb2Result : false;

                        #region 检查指标
                        foreach (XmlNode 检查指标 in 桥梁组成二级部件)
                        {
                            一条指标 sss = new 一条指标(false);
                            ss.指标集合.Add(sss);
                            sss.标度及其说明集合.Clear();
                            sss.检查指标参数.指标名称 = 检查指标.Attributes["指标名称"].Value;

                            #region 标度及其说明
                            foreach (XmlNode 标度及其说明 in 检查指标)
                            {
                                一条标度及说明 ssss = new 一条标度及说明();
                                int iResult;
                                ssss.标度及其说明.标度 = int.TryParse(标度及其说明.Attributes["标度"].Value, out iResult) ? iResult : 0;
                                if ((标度及其说明 as XmlElement).HasAttribute("是否存在"))
                                {
                                    bool ssssbResult;
                                    ssss.标度及其说明.IsExist = bool.TryParse(标度及其说明.Attributes["是否存在"].Value, out ssssbResult) ? ssssbResult : false;
                                }
                                if ((标度及其说明 as XmlElement).HasAttribute("IsExist"))
                                {
                                    bool ssssbResult;
                                    ssss.标度及其说明.IsExist = bool.TryParse(标度及其说明.Attributes["IsExist"].Value, out ssssbResult) ? ssssbResult : false;
                                }
                                ssss.标度及其说明.定性说明 = 标度及其说明.Attributes["定性说明"].Value;
                                ssss.标度及其说明.定量说明 = 标度及其说明.Attributes["定量说明"].Value;
                                sss.标度及其说明集合.Add(ssss);
                            }
                            #endregion

                            //ss.指标集合.Add(sss);
                        }
                        #endregion

                        一条指标 temp0 = new 一条指标();
                        temp0.检查指标参数.指标名称 = ss.指标集合.Last().检查指标参数.指标名称;
                        temp0.检查指标参数.标度及其说明集合 = ss.指标集合.Last().检查指标参数.标度及其说明集合;
                        temp0.标度及其说明集合 = ss.指标集合.Last().标度及其说明集合;

                        ss.指标集合[ss.指标集合.Count - 1] = temp0;

                        //s.二级部件集合.Add(ss);
                    }
                    #endregion

                    一个二级部件 temp1 = new 一个二级部件();
                    if (s.二级部件集合.Count == 0)
                    {
                        s.二级部件集合.Add(new 一个二级部件(true));
                    }
                    //temp1.桥梁组成二级部件参数 = s.二级部件集合.Last()?.桥梁组成二级部件参数;
                    temp1.桥梁组成二级部件参数.IsExist = s.二级部件集合.Last().桥梁组成二级部件参数.IsExist;
                    temp1.桥梁组成二级部件参数.是否主要部件 = s.二级部件集合.Last().桥梁组成二级部件参数.是否主要部件;
                    temp1.桥梁组成二级部件参数.构件数 = s.二级部件集合.Last().桥梁组成二级部件参数.构件数;
                    temp1.桥梁组成二级部件参数.检查指标集合 = s.二级部件集合.Last().桥梁组成二级部件参数.检查指标集合;
                    temp1.桥梁组成二级部件参数.部件名称 = s.二级部件集合.Last().桥梁组成二级部件参数.部件名称;
                    temp1.桥梁组成二级部件参数.部件权重 = s.二级部件集合.Last().桥梁组成二级部件参数.部件权重;
                    temp1.指标集合 = s.二级部件集合.Last().指标集合;

                    s.二级部件集合[s.二级部件集合.Count - 1] = temp1;

                    //一级部件集合.Add(s);
                }
                #endregion

                一个一级部件 temp2 = new 一个一级部件();
                if (一级部件集合.Count == 0)
                {
                    一级部件集合.Add(new 一个一级部件(true));
                }
                //temp2.桥梁组成一级部件参数 = 一级部件集合.Last().桥梁组成一级部件参数;
                temp2.桥梁组成一级部件参数.IsExist = 一级部件集合.Last().桥梁组成一级部件参数.IsExist;
                temp2.桥梁组成一级部件参数.是否主要部件 = 一级部件集合.Last().桥梁组成一级部件参数.是否主要部件;
                temp2.桥梁组成一级部件参数.桥梁组成二级部件集合 = 一级部件集合.Last().桥梁组成一级部件参数.桥梁组成二级部件集合;
                temp2.桥梁组成一级部件参数.部件名称 = 一级部件集合.Last().桥梁组成一级部件参数.部件名称;
                temp2.桥梁组成一级部件参数.部件权重 = 一级部件集合.Last().桥梁组成一级部件参数.部件权重;
                temp2.二级部件集合 = 一级部件集合.Last().二级部件集合;

                一级部件集合[一级部件集合.Count - 1] = temp2;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }