如何从XAML对象获取C#中的几何信息?

时间:2011-10-14 16:44:31

标签: c# wpf wpf-controls

给出以下XAML代码:

<Canvas Name="MainView">

    <Canvas Name="TriangleElement" Width="50" Height="50" Canvas.Left="110" Canvas.Top="100">
        <Canvas.RenderTransform>
            <RotateTransform CenterX="25" CenterY="25" Angle="0" />
        </Canvas.RenderTransform>
        <Path Stroke="#FF009600" StrokeThickness="1" Fill="#FF68E168">
            <Path.Data>
                M 0,0 L 50,0 50,50 Z
            </Path.Data>
        </Path>
    </Canvas>

    <Canvas Name="SquareElement" Width="50" Height="50" Canvas.Left="170" Canvas.Top="100">
        <Canvas.RenderTransform>
            <RotateTransform CenterX="25" CenterY="25" Angle="0" />
        </Canvas.RenderTransform>
        <Path Stroke="#FF005DFF" StrokeThickness="1" Fill="#FF98D0F8">
            <Path.Data>M 0,0 L 50,0 50,50 0,50 Z</Path.Data>
        </Path>
    </Canvas>

</Canvas>

如何在不使用XAML命名的情况下获取c#中的路径数据/几何信息?在过去,我创建了几个UserControl,创建了对象的接口,并根据路径名称提取信息。在我目前的情况下,我无法使用这种方法。

1 个答案:

答案 0 :(得分:1)

不确定我是否理解这个问题,但你不能使用

((Path)TriangleElement.Children[0]).Data

那些Canvas元素是什么?他们似乎没有做任何事情。

为什么不:

<Path Name="SquareElement" Width="50" Height="50" Stroke="#FF005DFF" StrokeThickness="1" Fill="#FF98D0F8">
    <Path.RenderTransform>
        <RotateTransform CenterX="25" CenterY="25" Angle="60" />
    </Path.RenderTransform>
    <Path.Data>M 0,0 L 50,0 50,50 0,50 Z</Path.Data>
</Path>

然后你可以直接通过名字直达你的路径。