private static void BoardPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { (d as DesignerCanvas).Children.Clear(); //初始化可视元素 foreach (DesignerControl obj in (e.NewValue as DesignerBoard).VisualChildren) { UserControl u = BoardControlFactory.CreateBoardControlByDesignerType(obj.GetType(), obj); (d as DesignerCanvas).AddDesignerItem(u, new Point((obj as DesignerControl).Position.Location.X, (obj as DesignerControl).Position.Location.Y)); } //注册后台元素 foreach (DesignerDataSource ds in (e.NewValue as DesignerBoard).BackChildren) { DataSourceManager.Register(ds.Name, ds.DataSourceType, ds); switch (ds.DataSourceType) { case DesignerDataSourceType.DataBase: DataBaseDataSourceManager.UpdateDataBaseDataSource(ds as DesignerDataBaseDataSource); break; case DesignerDataSourceType.StaticText: StaticTextDataSourceManager.UpdateStaticTextDataSource(ds as DesignerStaticTextDataSource); break; } } ((DesignerCanvas)d).SelectItem = e.NewValue as DesignerBoard; }
protected override void OnDrop(DragEventArgs e) { base.OnDrop(e); string controlName = e.Data.GetData("NewItem") as string; if (!String.IsNullOrEmpty(controlName)) { try { ControlWrapper wrapper = BoardControlFactory.CreateCandyByName(controlName); object candy = wrapper.Tear(); if (candy != null) { Point location = e.GetPosition(this); AddDesignerItem(candy, location); } } catch (Exception ex) { MessageBox.Show(ex.Message); } e.Handled = true; } }