using System; using System.Collections.Generic; using System.Text; using System.Windows; using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { class CustomDefinedNodeViewModel : BaseViewModel { public CustomDefinedNodeViewModel() { Title = "Custom defined node"; Info = "Creating your own defined design is very easy!"; DiagramViewModel = new DiagramViewModel(); DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.ColorViewModel = new ColorViewModel(); DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" }; DiagramViewModel.DirectAddItemCommand.Execute(node1); CustomDefinedDesignerItemViewModel node2 = new CustomDefinedDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300 }; DiagramViewModel.DirectAddItemCommand.Execute(node2); CustomDefinedDesignerItemViewModel node3 = new CustomDefinedDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50 }; DiagramViewModel.DirectAddItemCommand.Execute(node3); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.TopConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); DiagramViewModel.DirectAddItemCommand.Execute(connector1); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.BottomConnector, node3.BottomConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.ClearSelectedItemsCommand.Execute(null); } } public class CustomDefinedDesignerItemViewModel : DesignerItemViewModelBase { public CustomDefinedDesignerItemViewModel() : this(null) { } public CustomDefinedDesignerItemViewModel(IDiagramViewModel root) : base(root) { } public CustomDefinedDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public CustomDefinedDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } public override SelectableItemBase GetSerializableObject() { return new DesignerItemBase(this, Answer); } protected override void Init(IDiagramViewModel root) { base.Init(root); this.ItemWidth = 150; this.ItemHeight = 80; InitConnector(); } protected override void InitConnector() { connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top)); connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom)); } protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase) { base.LoadDesignerItemViewModel(designerbase); if (designerbase is DesignerItemBase designer) { this.Answer = designer.Reserve; } } private string _answer; public string Answer { get { return _answer; } set { SetProperty(ref _answer, value); } } } }