Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
            }
        }