在XAML中检测网格

在XAML中检测网格,xaml,windows-8,Xaml,Windows 8,我有两个XAML网格。一小一大。我怎么能在第一次移动之后,在第二次移动之后发现它呢?我需要类似smth的坐标(需要将第一个网格与第二个网格的边界对齐,或者与此“大网格”中的其他网格对齐)。什么是方法、属性 <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid HorizontalAlignment="Center" VerticalAlignment="Center"

我有两个XAML网格。一小一大。我怎么能在第一次移动之后,在第二次移动之后发现它呢?我需要类似smth的坐标(需要将第一个网格与第二个网格的边界对齐,或者与此“大网格”中的其他网格对齐)。什么是方法、属性

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="Parent" Margin="124,340,1042,228">
        <Grid.RowDefinitions>
            <RowDefinition Height="100"/>
            <RowDefinition Height="100"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
        </Grid.ColumnDefinitions>
        <Grid Grid.Column="0" ManipulationDelta="Object_ManipulationDelta" x:Name="Figure" ManipulationMode="All">
            <Rectangle Fill="Red" Width="40" Height="40"/>
            <Rectangle Fill="Red" Width="40" Height="40" Margin="-10,30,70,30"/>
            <Rectangle Fill="Red" Width="40" Height="40" Margin="-10,70,70,-10"/>
            <Rectangle Fill="Red" Width="40" Height="40" Margin="-50,70,110,-10"/>
            <Grid.RenderTransform>
                <CompositeTransform/>
            </Grid.RenderTransform>
        </Grid>
    </Grid>
    <Grid x:Name="Field" Width="500" Height="700">
        <Rectangle Fill="Black" Width="40" Height="40" Margin="10,10,450,650" StrokeThickness="1" Stroke="#FF1B1B1B"/>
        <Rectangle Fill="Black" Width="40" Height="40" Margin="50,10,410,650" StrokeThickness="1" Stroke="#FF1B1B1B"/>
        <Rectangle Fill="Black" Width="40" Height="40" Margin="90,10,370,650" StrokeThickness="1" Stroke="#FF1B1B1B"/>
        <!--many rectangles-->
    </Grid>
</Grid>


我将栅格图形移动到栅格字段。将来,我可能会将矩形更改为边框。

要检测图形和字段之间的相对位置,可以使用以下方法:

var transform= Field.TransformToVisual(Figure);
Point relativePosition = transform.TransformPoint(new Point(0,0));
相对坐标将是字段左上角和图形左上角之间的距离

如果需要栅格的绝对坐标,可以执行以下操作:

 var transform= this.TransformToVisual(Figure);
 Point absolutePositionFigureGrid = transform.TransformPoint(new Point(0,0));

你能发布你的XAML吗?@BolucPapuccuoglu是的,我发布了。请原谅我,但如果我旋转图形(当我旋转时,我会改变它的中心X/Y),它在我将其返回到原始位置之前不会工作。也许你能再帮我一次?