Metro应用程序-使用C#/VB获取触摸/鼠标的绝对指针位置

Metro应用程序-使用C#/VB获取触摸/鼠标的绝对指针位置,c#,vb.net,windows-8,microsoft-metro,C#,Vb.net,Windows 8,Microsoft Metro,我一直在尝试这样做,但没有成功 我有一个stackpanel,在我的metro应用程序页面中有一个文本块,还有一个网格(名为:grdtheheHelper,放置在网格外),背景颜色为黑色(这样当它进入页面时可以看到) 我的要求是,当我触摸/单击stackpanel中的textblock时,黑色网格正好出现在我单击的位置 这怎么可能。我试过了 Dim XY As New TranslateTransform Private Sub MainPage_Loaded(sender As Obj

我一直在尝试这样做,但没有成功

我有一个stackpanel,在我的metro应用程序页面中有一个文本块,还有一个网格(名为:grdtheheHelper,放置在网格外),背景颜色为黑色(这样当它进入页面时可以看到)

我的要求是,当我触摸/单击stackpanel中的textblock时,黑色网格正好出现在我单击的位置

这怎么可能。我试过了

 Dim XY As New TranslateTransform

  Private Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    grdTheHelper.RenderTransform = XY
  End Sub

 Private Sub txt1_Tapped(sender As Object, e As TappedRoutedEventArgs) Handles txt1.Tapped
         Dim AbsXY As Point
         AbsXY = e.GetPosition(Me)
         XY.X = AbsXY.X
         XY.Y = AbsXY.Y
    End Sub
但这是放置网格说有点太远了,我接触到的地方。我不懂。我做错什么了吗?TranslateTransform是否仅用于通过处理操纵增量移动对象?应该用别的东西吗?
请帮助我。

如果您有这样的XAML:

<Rectangle x:Name="Rect1" Fill="White" Height="100" Width="100" />

<Rectangle x:Name="Rect2" Fill="Green" Height="100" Width="100" 
            ManipulationMode="All"
            ManipulationDelta="Rect2_ManipulationDelta_1">
    <Rectangle.RenderTransform>
        <CompositeTransform x:Name="Rect2Transform" />
    </Rectangle.RenderTransform>
</Rectangle>
在上面的代码中,我将rect2保留在屏幕上指针当前所在的位置。然后该方法将rect1直接放在rect2的新位置之上

这正好演示了如何从指针设备或相对于屏幕上的对象获取绝对位置。这就是你问题的答案

我拿不到它(实际上,使用此选项会将我的网格移出视图,也就是说,它会消失(我将button.TransformToVisual(_页面)替换为my grid.TransformToVisual(_页面))
private void Rect2_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
    Rect2Transform.TranslateX += e.Delta.Translation.X;
    Rect2Transform.TranslateY += e.Delta.Translation.Y;

    var _Visual = Rect2.TransformToVisual(this);
    var _Location = _Visual.TransformPoint(new Point());

    Rect1.SetValue(Canvas.LeftProperty, _Location.X);
    Rect1.SetValue(Canvas.TopProperty, _Location.Y - 100);
}