我的viewModel为Node
每个Node
只有一个Pin
(为简单起见)
public class Node
{
...
Point Location {get;set;}
Pin Pin {get;set;}
string Text {get;set;}
...
}
每个Pin
都有一个Connection
属性
public class Pin
{
...
Node Node {get;set;}
Connection Connection {get;set;}
...
}
每个Connection
都有一个源和目标引脚
public class Connection
{
Pin Source {get;set;}
Pin Target {get;set;}
}
现在,我想在WPF中显示所有这些内容。
对于PinView
,我将进行简单的自定义渲染控件
具有Pin
DependencyProperty并覆盖了OnRender()
以绘制椭圆
对于Node
DataTemplate,我将拥有
PinView
内TextBlock
内的StackPanel
和Border
对于连接数据模板,我将Line
X1和Y1绑定到...等等!
我如何将它们绑定到任何东西,因为只有它知道我的销钉将在哪里?
1)我是否应该创建Point PinLocation {get;set;}
属性,并在每次进行Arrange或Measure或LayoutUpdate时从视图中更新它?这仍然是MVVM吗?
2)还有以下问题,当节点移动时如何更新我的Connection属性?我的Connection
是否应订阅Pin的PropertyChanged