WPF MVVM将一个视图位置绑定到另一个视图的正确方法

时间:2018-09-06 15:44:52

标签: c# wpf mvvm

我的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,我将拥有 PinViewTextBlock内的StackPanelBorder

对于连接数据模板,我将Line X1和Y1绑定到...等等!

我如何将它们绑定到任何东西,因为只有它知道我的销钉将在哪里?

1)我是否应该创建Point PinLocation {get;set;}属性,并在每次进行Arrange或Measure或LayoutUpdate时从视图中更新它?这仍然是MVVM吗?

2)还有以下问题,当节点移动时如何更新我的Connection属性?我的Connection是否应订阅Pin的PropertyChanged

0 个答案:

没有答案