Sunchronizing view model y view

Tengo un modelo de vista que consta de algunos nodos y algunos conectores:

public class ViewModel
{
    public List<Node> Nodes{get;set;}
    public List<Connector> Connectors{get;set;}
}

public Class Node
{
   public Point Position{get;set;}
}

public class Connector
{
   public Node StartNode{get;set;}  
   public Node EndNode{get;set;}    
}

Ahora visualizo nodos en la página por un control de elementos:

   <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Styles.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
            <local:ElementThumbConverter x:Key="ElementThumbConverter"/>
            <local:ElementThumbConverter2 x:Key="ElementThumbConverter2"/>
            <Style  x:Key="ElementThumbVMDataTemplateStyle" TargetType="ContentPresenter">
                <Setter Property="Canvas.Left"  Value="{Binding CanvasLeft,Mode=TwoWay}" />
                <Setter Property="Canvas.Top"  Value="{Binding CanvasTop,Mode=TwoWay}" />
                <!--<Setter Property="Canvas.Top"   Value="{Binding RelativeSource={RelativeSource Self},Path=ContentTemplate.elementThumb.(Canvas.Top), Mode=TwoWay}" />-->
            </Style >
            <DataTemplate DataType="{x:Type vm:ElementThumbVM}">
                <!--Canvas.Left="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContentPresenter},Path=(Canvas.Left),Mode=TwoWay}"-->
                <kw:ElementThumb Name="elementThumb" Tag="" 
                                 Canvas.Left="{Binding CanvasLeft,Mode=TwoWay}"
                                 Canvas.Top="{Binding CanvasTop,Mode=TwoWay}">
                </kw:ElementThumb>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding ElementType}">
                        <DataTrigger.Value>
                            <vm:ElementType>BusinessServer</vm:ElementType>
                        </DataTrigger.Value>
                        <Setter TargetName="elementThumb" Property="Style" Value="{StaticResource BussinesServerStyle}"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementType}">
                        <DataTrigger.Value>
                            <vm:ElementType>DataBase</vm:ElementType>
                        </DataTrigger.Value>
                        <Setter TargetName="elementThumb" Property="Style" Value="{StaticResource DataBaseStyle}"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
            <DataTemplate DataType="{x:Type vm:ConnectorVM}">
                <kw:Connector>
                    <kw:Connector.StartElementThumb>
                        <Binding Converter="{StaticResource ElementThumbConverter2}">
                            <Binding.Source>
                                <MultiBinding Converter="{StaticResource ElementThumbConverter}">
                                    <Binding Path="ElementThumbVMStartId" />
                                    <Binding RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=kw:DiagramCanvas}"/>
                                </MultiBinding>
                            </Binding.Source>
                        </Binding>
                    </kw:Connector.StartElementThumb>
                    <kw:Connector.EndElementThumb>
                        <Binding Converter="{StaticResource ElementThumbConverter2}">
                            <Binding.Source>
                                <MultiBinding Converter="{StaticResource ElementThumbConverter}">
                                    <Binding Path="ElementThumbVMEndId" />
                                    <Binding RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=kw:DiagramCanvas}"/>
                                </MultiBinding>
                            </Binding.Source>
                        </Binding>
                    </kw:Connector.EndElementThumb>
                </kw:Connector>
            </DataTemplate>
        </ResourceDictionary>
    </UserControl.Resources>

    <ItemsControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                  ItemsSource="{Binding AllElements}" x:Name="mainCanvasControl"
                  ItemContainerStyle="{StaticResource ElementThumbVMDataTemplateStyle}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <kw:DiagramCanvas Name="mainCanvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

Como puede ver, tengo una plantilla de visualización para los nodos y el conector, funciona bien para los nodos, pero para el conector necesito obtener su nodo inicial y final correspondiente, de modo que cuando un nodo en la interfaz de usuario cambia su posición, puedo rastrear su cambio y reflejarlo en el conector , También necesito finalmente mostrar con y la altura del nodo de visualización (digo ElmenetThumb). En resumen, cada nodo en el modelo tiene un ElmenetThumb análogo en la página Quiero pasar ElmenetThumb análogo de los nodos de inicio y fin al elemento análogo del conector para el seguimiento de posición. Intento hacer eso por conector, como puede ver en el código anterior, pero no funciona porque al momento de llamar, el contenido de conversión de ItemsControl no está completamente construido.

Respuestas a la pregunta(1)

Su respuesta a la pregunta