コード例 #1
0
ファイル: DesignerItem.cs プロジェクト: WinnieThePoooh/Lego
 public DesignerItem(Guid id, ElementViewModel vm = null)
 {
   ID = id;
   Loaded += DesignerItem_Loaded;
   ElementViewModel = vm;
   //Unloaded += (sender, args) => 
 }
コード例 #2
0
ファイル: DesignerCanvas.cs プロジェクト: WinnieThePoooh/Lego
    protected override void OnDrop(DragEventArgs e)
    {
      base.OnDrop(e);
      var dragObject = e.Data.GetData(typeof (DragObject)) as DragObject;
      if (dragObject != null) // && !String.IsNullOrEmpty(dragObject.Xaml))
      {
        DesignerItem newItem = null;
        //Object content = XamlReader.Load(XmlReader.Create(new StringReader(dragObject.Xaml)));
        var content = "";
        if (content != null)
        {
          var vm = DataContext as EditorWindowViewModel;
          if (vm == null)
          {
            throw new ArgumentException("DataContext as ConstructorViewModel");
            return;
          }

          var visualProperties = new VisualProperties();
          //visualProperties.Size = 
          var elementProperties = new ElementProperties(visualProperties, new DomainProperties());
          var initialElement = dragObject.InitialElementViewModel.InitialElement;
          var model = new Element(initialElement, elementProperties);
          var elementViewModel = new ElementViewModel(model);
          elementViewModel.ElementPropertiesViewModel.Name = string.Format("{0} {1}", initialElement.Name, count++);
          newItem = new DesignerItem(elementViewModel);

          newItem.SizeChanged += (sender, args) =>
          {
            var newSize = args.NewSize;
            elementViewModel.ElementPropertiesViewModel.ElementVisualPropertiesViewModel.Size = new ElementSize(newSize.Height, newSize.Width);
          };

          var button = new Ellipse
          {
            //Width = 100,
            //Height = 100,
            Fill = Brushes.Aqua
          };
          newItem.Content = ResourceUtil.GetResourceByName(dragObject.InitialElementViewModel.StyleName) ?? button;

          var position = e.GetPosition(this);

          if (dragObject.DesiredSize.HasValue)
          {
            var desiredSize = dragObject.DesiredSize.Value;
            newItem.Width = desiredSize.Width;
            newItem.Height = desiredSize.Height;

            SetLeft(newItem, Math.Max(0, position.X - newItem.Width/2));
            SetTop(newItem, Math.Max(0, position.Y - newItem.Height/2));
          }
          else
          {
            SetLeft(newItem, Math.Max(0, position.X));
            SetTop(newItem, Math.Max(0, position.Y));
          }

          newItem.SetCoords();

          SetZIndex(newItem, Children.Count);
          Children.Add(newItem);
          SetConnectorDecoratorTemplate(newItem);

          //update selection
          SelectionService.SelectItem(newItem);
          newItem.Focus();

          vm.Add(newItem.ElementViewModel);

        }

        e.Handled = true;
      }
    }
コード例 #3
0
 public void Remove(ElementViewModel elementViewModel)
 {
   Elements.Remove(elementViewModel);
 }
コード例 #4
0
 public void Add(ElementViewModel elementViewModel)
 {
   Elements.Add(elementViewModel);
   //Elements.Add(new Element(initialElement, new Coords(xCoord, yCoord)));
 }
コード例 #5
0
ファイル: DesignerItem.cs プロジェクト: WinnieThePoooh/Lego
 public DesignerItem(ElementViewModel vm = null)
   : this(Guid.NewGuid(), vm)
 {
 }
コード例 #6
0
 public void Remove(ElementViewModel elementViewModel)
 {
   ConstructorViewModel.Remove(elementViewModel);
 }
コード例 #7
0
 public void Add(ElementViewModel elementViewModel)
 {
   ConstructorViewModel.Add(elementViewModel);
 }