Как я могу получить информацию о геометрии в C # из объекта XAML?

#c# #wpf #wpf-controls

#c# #wpf #wpf-элементы управления

Вопрос:

учитывая следующий код 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>
  

Как я могу получить данные пути / информацию о геометрии в c #, не называя их в XAML? В прошлом я создал несколько пользовательских контроллеров, создал интерфейс к объектам и извлек информацию на основе имени пути. В моем текущем случае я не могу использовать этот подход.

Ответ №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>
  

Затем вы можете перейти прямо к своим путям по имени.