C# 在WinRT应用程序中,如何在运行时将一个控件定位在另一个控件之上?

C# 在WinRT应用程序中,如何在运行时将一个控件定位在另一个控件之上?,c#,xaml,windows-runtime,routed-events,C#,Xaml,Windows Runtime,Routed Events,我有一个C#WinRT应用程序。我有一排缩略图。当用户按下并按住缩略图时,我想“弹出”一个网格,作为缩略图所在位置的上下文菜单。除了网格在目标缩略图上的定位之外,我的一切都正常工作。在WinForms中,使用顶部/左侧属性很简单,但这些属性或任何类似的属性在WinRT中似乎不存在 我可以通过HoldRoutingEventArgs访问目标图像对象,也可以通过XAML访问网格,因为它在开始时存在,但不透明度为0%。我甚至将属于目标图像对象的Rect结构保存到ViewModel中的Rect属性中,希

我有一个C#WinRT应用程序。我有一排缩略图。当用户按下并按住缩略图时,我想“弹出”一个网格,作为缩略图所在位置的上下文菜单。除了网格在目标缩略图上的定位之外,我的一切都正常工作。在WinForms中,使用顶部/左侧属性很简单,但这些属性或任何类似的属性在WinRT中似乎不存在

我可以通过HoldRoutingEventArgs访问目标图像对象,也可以通过XAML访问网格,因为它在开始时存在,但不透明度为0%。我甚至将属于目标图像对象的Rect结构保存到ViewModel中的Rect属性中,希望通过数据绑定实现这一点。我只是不知道如何将网格移动到所需的位置。我该怎么做

例如:

.A----------------------------
|    .B-----  .C----          |
|    |      | |     |         |
|    |      | |     |         |
|    |      | |     |         |
|     ------   -----          |
|                             |
|                             |
 ----------------------------
其中.A表示主机的边距,.B表示缩略图的边距,C还包括缩略图

主机(A)中网格的边距将与您选择的缩略图相同(这是基于网格也是主机容器的一部分这一事实)。否则,您需要添加两个边距以计算正确的边距

A.TopMargin=50和LeftMargin=90 B.上边距=5,左边距=35 C.TopMargin=5和LeftMargin=95

对于代码中的:

BThum = YourSelectedThumbNailAtThatMoment; //either B or C
Grid.TopMargin = AHost.TopMargin + BThum.TopMargin;
Grid.LeftMargin = AHost.LeftMargin + BThum.LeftMargin;

如果缩略图有边距(TopMargin和LeftMargin),我假设您可以使用these@Schuere这些值不是相对于主体容器的吗?正确,但是当您将网格添加到A时:主体容器,而边距是相同的;或者B:上面的容器,而你的利润总额是正确的点(我认为)