WPF MVVM Правильный способ привязать одно место просмотра к другому - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...