如何将线的位置绑定到XAML中椭圆的变换位置

时间:2012-02-29 08:18:10

标签: c# wpf xaml

我有一个椭圆正在通过变换进行翻译,如下面的模板所示:

<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上指定字段,但这看起来很笨拙。

能够绑定到这些移动元素的位置 - 任何人都可以帮助我吗?

1 个答案:

答案 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}" />

希望得到这个帮助。

安托