У меня есть 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
имеет пины Source и Target
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
будет подписан на пин-код PropertyChanged