如何在运行时将控件放在WinRT应用程序中的另一个控件上?

时间:2014-02-05 06:07:06

标签: c# xaml windows-runtime routed-events

我有一个C#WinRT应用程序。我有一排缩略图。当用户按下并按住缩略图时,我想“弹出”一个网格,该网格充当缩略图所在位置的上下文菜单。除了将网格定位在目标缩略图上之外,我还能正常工作。在WinForms中,使用Top / Left属性这是微不足道的,但WinRT中似乎不存在这些属性或类似的东西。

我可以通过HoldRoutingEventArgs访问目标Image对象,并且我可以通过XAML访问Grid,因为它在开始时存在,但不透明度为0%。我甚至将属于目标Image对象的Rect结构保存到我的ViewModel中的Rect属性中,希望通过数据绑定来解决这个问题。我只是不知道如何将网格移动到所需的位置。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

一个例子:

.A----------------------------
|    .B-----  .C----          |
|    |      | |     |         |
|    |      | |     |         |
|    |      | |     |         |
|     ------   -----          |
|                             |
|                             |
 ----------------------------

其中.A表示主机的边距,.B表示缩略图的边距,C也表示缩略图。

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

A.TopMargin = 50,LeftMargin = 90 B.TopMargin = 5,leftMargin = 35 C.TopMargin = 5,LeftMargin = 95

代码:

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