mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
PropertyChanged使用基类的,各个类不在自己定义
This commit is contained in:
@@ -18,22 +18,27 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
/// </summary>
|
||||
public class ConnectionViewModel : SelectableDesignerItemViewModelBase
|
||||
{
|
||||
public ConnectionViewModel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : base(root)
|
||||
{
|
||||
PathMode = drawMode.ToString();
|
||||
RouterMode = routerMode.ToString();
|
||||
{
|
||||
_pathMode = drawMode.ToString();
|
||||
_routerMode = routerMode.ToString();
|
||||
Init(root, sourceConnectorInfo, sinkConnectorInfo);
|
||||
}
|
||||
|
||||
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer)
|
||||
{
|
||||
PathMode = designer.PathMode;
|
||||
RouterMode = designer.RouterMode;
|
||||
_pathMode = designer.PathMode;
|
||||
_routerMode = designer.RouterMode;
|
||||
Init(root, sourceConnectorInfo, sinkConnectorInfo);
|
||||
}
|
||||
|
||||
@@ -53,34 +58,26 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
protected virtual void Init(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo)
|
||||
{
|
||||
this.Root = root?? sourceConnectorInfo.Root;
|
||||
|
||||
IsLoaded = false;
|
||||
this.Root = root ?? sourceConnectorInfo.Root;
|
||||
if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false)
|
||||
{
|
||||
this.ShapeViewModel.SinkMarker = new LinkMarker("", 10, 10, ArrowPathStyle.None, ArrowSizeStyle.Middle);
|
||||
}
|
||||
this.ColorViewModel.PropertyChanged += ConnectorViewModel_PropertyChanged;
|
||||
this.ShapeViewModel.PropertyChanged += ConnectorViewModel_PropertyChanged;
|
||||
this.PropertyChanged += ConnectorViewModel_PropertyChanged;
|
||||
|
||||
}
|
||||
var routetype = TypeHelper.GetType(RouterMode);
|
||||
Router = routetype != null ? (System.Activator.CreateInstance(routetype) as IRouter) : new RouterNormal();
|
||||
|
||||
var pathGeneratortype = TypeHelper.GetType(PathMode);
|
||||
PathGenerator = pathGeneratortype != null ? (System.Activator.CreateInstance(pathGeneratortype) as IPathGenerator) : new ConnectingLineSmooth();
|
||||
IsLoaded= true;
|
||||
|
||||
this.SourceConnectorInfo = sourceConnectorInfo;
|
||||
this.SinkConnectorInfo = sinkConnectorInfo;
|
||||
|
||||
DeleteConnectionCommand = new SimpleCommand(Command_Enable, DeleteConnection);
|
||||
AddVertexCommand = new SimpleCommand(Command_Enable, AddVertex);
|
||||
AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel());
|
||||
}
|
||||
|
||||
protected override void InitNew()
|
||||
{
|
||||
base.InitNew();
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
@@ -448,8 +445,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void ConnectorViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
protected override void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) return;
|
||||
|
||||
if (sender is ConnectionViewModel)
|
||||
{
|
||||
switch (e.PropertyName)
|
||||
@@ -464,20 +463,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
case nameof(Vertices):
|
||||
foreach (var vertice in Vertices)
|
||||
{
|
||||
vertice.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
vertice.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
}
|
||||
break;
|
||||
case nameof(Labels):
|
||||
foreach (var label in Labels)
|
||||
{
|
||||
label.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
label.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
}
|
||||
break;
|
||||
case nameof(SourceConnectorInfo):
|
||||
if (SourceConnectorInfo != null)
|
||||
{
|
||||
SourceA = PointHelper.GetPointForConnector(SourceConnectorInfo);
|
||||
SourceConnectorInfo.DataItem.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
SourceConnectorInfo.DataItem.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
}
|
||||
break;
|
||||
case nameof(SinkConnectorInfo):
|
||||
@@ -486,7 +485,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
SourceB = SinkConnectorInfo.Position;
|
||||
if (IsFullConnection)
|
||||
{
|
||||
SinkConnectorInfoFully.DataItem.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
SinkConnectorInfoFully.DataItem.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -572,7 +571,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
else if (sender is ColorViewModel)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -595,7 +594,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
PathGeneratorResult = PathGenerator.Get(Root, this, route, source.Value, target.Value);
|
||||
|
||||
var startMiddle = new RectangleBase
|
||||
(
|
||||
(
|
||||
(PathGeneratorResult.SourceMarkerPosition.X + (source.Value.X - Area.Left)) / 2,
|
||||
(PathGeneratorResult.SourceMarkerPosition.Y + (source.Value.Y - Area.Top)) / 2,
|
||||
0,
|
||||
@@ -820,7 +819,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
pointBase = new PointBase(pointBase.X - Area.Left, pointBase.Y - Area.Top);
|
||||
}
|
||||
var vertice = new ConnectorVertexModel(this, pointBase);
|
||||
vertice.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
vertice.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
Vertices.Add(vertice);
|
||||
UpdatePathGeneratorResult();
|
||||
}
|
||||
@@ -839,7 +838,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public void AddLabel(string text = null, double? distance = null, PointBase? offset = null)
|
||||
{
|
||||
var label = new ConnectorLabelModel(this, text?.ToString(), distance, offset);
|
||||
label.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
|
||||
label.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
label.IsSelected = true;
|
||||
Labels.Add(label);
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
ShapeViewModel = CopyHelper.Mapper(designerbase.SharpItem);
|
||||
}
|
||||
|
||||
protected bool IsLoaded
|
||||
public bool IsLoaded
|
||||
{
|
||||
get;set;
|
||||
}
|
||||
@@ -424,7 +424,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
if (IsLoaded == false) { return; }
|
||||
}
|
||||
|
||||
protected virtual void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
protected void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
@@ -436,14 +436,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
protected virtual void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
protected void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
protected virtual void ShapeViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
protected void ShapeViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user