/// <summary> /// 控件删除操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void _ControlDeleteMethod(object sender, ControlDeleteEventArgs e) { if (null != ControlDelete) { ControlDelete(sender, e); } }
/// <summary> /// 删除操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void DesignPage_ControlDelete(object sender, ControlDeleteEventArgs e) { this.IsUpdate = true; string controlName = e.ControlName; this._IDesignFramework.UpdateCurrentSelectedCtrl(null); DeleteCurrentSelectedControl(controlName); //-->如果是Form控件的话,删除最后一个控件的时候,要把虚拟的那个控件也要删除掉 string v_control = Wrapper.ParseControlName(controlName); if (!v_control.Equals(controlName)) { int controls = _XmlTemplate.ControlItem.Where(p => p.Name.Contains(v_control)).Count(); if (1 == controls) { //-->最后一个控件了,现在开始进行删除操作 DeleteCurrentSelectedControl(v_control); } } this.Xaml_Template = this._XamlTemplate.ParseXml().ToString(); this.Xml_Template = _XmlTemplate.ParseXml().ToString(); UpdateControlTree(); }
/// <summary> /// 删除当前选择的控件 /// </summary> void DeleteCurrentSelectedControl() { if (null == _CurrentDesignCtrl) { return; } ControlDeleteEventArgs de = new ControlDeleteEventArgs(); de.ControlName = this._CurrentDesignCtrl.Name; _ControlDeleteMethod(this, de); //-->删除字典里的控件 dictControl.Remove(de.ControlName); //-->获取当前的控件所在索引 int indexs = this.cvsPanle.Children.IndexOf(this._CurrentDesignCtrl); this.cvsPanle.Children.Remove(this._CurrentDesignCtrl); _CurrentDesignCtrl = null; //--> if (0 == this.cvsPanle.Children.Count) { dr.Visibility = System.Windows.Visibility.Collapsed; return; } if (indexs >= this.cvsPanle.Children.Count) { indexs = this.cvsPanle.Children.Count - 1; } this._CurrentDesignCtrl = this.cvsPanle.Children[indexs] as FrameworkElement; if (this._CurrentDesignCtrl is Line || _CurrentDesignCtrl.Equals(dr)) { dr.Visibility = System.Windows.Visibility.Collapsed; return; } dr.Width = this._CurrentDesignCtrl.Width; dr.Height = this._CurrentDesignCtrl.Height; dr.SetValue(Canvas.TopProperty, (double)this._CurrentDesignCtrl.GetValue(Canvas.TopProperty)); dr.SetValue(Canvas.LeftProperty, (double)this._CurrentDesignCtrl.GetValue(Canvas.LeftProperty)); }