我有一个椭圆正在通过变换进行翻译,如下面的模板所示:
<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>
正如您从问号部分看到的那样,我不确定如何从ContentControl中检索X或Y位置。
这比代码实际包含的内容有所简化,所以我确实有理由想要绑定到翻译位置而不仅仅是绑定到X值本身(我最后使用了ValueConverter)。我可以在每个X和Y坐标上添加相同的ValueConverter,只需在viewmodel上指定字段,但这看起来很笨拙。
我应能够绑定到这些移动元素的位置 - 任何人都可以帮助我吗?
答案 0 :(得分:0)
如果我理解得很好,你希望你的线将头部连接到肩膀上。
如果是这样,我会直接将行位置绑定到作为hierarchyichalDataTemplate的datacontext的模型:
<Line X1="{Binding Path=Head.X}" Y1="{Binding Path=Head.Y}" X2="{Binding Path=ShoulderCenter.X}" Y2="{Binding Path=ShoulderCenter.Y}" />
希望得到这个帮助。
安托