У меня есть эллипс, который переводится с помощью преобразования, как указано в следующем шаблоне:
<DataTemplate x:Key="VectorTemplate">
<Ellipse>
<Ellipse.RenderTransform>
<TranslateTransform X="{Binding Path=X, Converter={StaticResource SomeValueConverter}}" Y="{Binding Path=Y, Converter={StaticResource SomeValueConverter}}" />
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
В другом месте я определяю ContentControl, который визуализирует:
<HierarchicalDataTemplate x:Key="SkeletonTemplate">
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource VectorTemplate}" />
</Style>
</Grid.Resources>
<ContentControl Content="{Binding Head}" x:Name="HeadCtrl"/>
<ContentControl Content="{Binding ShoulderCenter}" x:Name="ShoulderCenterCtrl"/>
<Line X1="{Binding Path=????, ElementName=HeadCtrl}" Y1="{Binding Path=????, ElementName=HeadCtrl}" X2="{Binding Path=????, ElementName=ShoulderCenterCtrl}" Y2="{Binding Path=????, ElementName=ShoulderCenterCtrl}" />
</Grid>
</HierarchicalDataTemplate>
Как вы увидите из части с вопросительными знаками, я не уверен, как извлечь позицию X или Y из ContentControl.
Это несколько упрощено по сравнению с тем, что на самом деле содержит код, поэтому у меня есть причина для того, чтобы захотеть привязать к переведенной позиции, а не просто привязать к самому значению X (в итоге я использую ValueConverter на нем). Я мог бы просто добавить один и тот же ValueConverter к каждой координате X и Y и просто указать поле назад в модели представления, но это кажется неуклюжим.
Я должен быть в состоянии привязаться к положению этих движущихся элементов - кто-нибудь может мне помочь?