Node.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System.Windows;
  2. using System.Windows.Controls;
  3. using System.Windows.Documents;
  4. using System.Collections.Generic;
  5. namespace SHJX.Service.WorkFlowEdit
  6. {
  7. public class Node : DiagramItem, INode
  8. {
  9. static Node()
  10. {
  11. FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(
  12. typeof(Node), new FrameworkPropertyMetadata(typeof(Node)));
  13. }
  14. #region Properties
  15. #region Content Property
  16. public object Content
  17. {
  18. get { return (bool)GetValue(ContentProperty); }
  19. set { SetValue(ContentProperty, value); }
  20. }
  21. public static readonly DependencyProperty ContentProperty =
  22. DependencyProperty.Register("Content",
  23. typeof(object),
  24. typeof(Node));
  25. #endregion
  26. #region CanResize Property
  27. public bool CanResize
  28. {
  29. get { return (bool)GetValue(CanResizeProperty); }
  30. set { SetValue(CanResizeProperty, value); }
  31. }
  32. public static readonly DependencyProperty CanResizeProperty =
  33. DependencyProperty.Register("CanResize",
  34. typeof(bool),
  35. typeof(Node),
  36. new FrameworkPropertyMetadata(true));
  37. #endregion
  38. private List<IPort> _ports = new List<IPort>();
  39. public ICollection<IPort> Ports { get { return _ports; } }
  40. public override Rect Bounds
  41. {
  42. get
  43. {
  44. //var itemRect = VisualTreeHelper.GetDescendantBounds(item);
  45. //return item.TransformToAncestor(this).TransformBounds(itemRect);
  46. var x = Canvas.GetLeft(this);
  47. var y = Canvas.GetTop(this);
  48. return new Rect(x, y, ActualWidth, ActualHeight);
  49. }
  50. }
  51. #endregion
  52. public Node()
  53. {
  54. }
  55. public void UpdatePosition()
  56. {
  57. foreach (var p in Ports)
  58. {
  59. p.UpdatePosition();
  60. }
  61. }
  62. protected override Adorner CreateSelectionAdorner()
  63. {
  64. return new SelectionAdorner(this, new SelectionFrame());
  65. }
  66. #region INode Members
  67. IEnumerable<IPort> INode.Ports
  68. {
  69. get { return _ports; }
  70. }
  71. #endregion
  72. }
  73. }