C# 如何以编程方式使UWP弹出窗口与控件关联?

C# 如何以编程方式使UWP弹出窗口与控件关联?,c#,xaml,uwp,uwp-xaml,C#,Xaml,Uwp,Uwp Xaml,我正在编写的行为需要将弹出窗口与控件相关联,以便弹出窗口的位置始终相对于该控件 在UWP中,弹出窗口没有可播放的placement属性。然后如何将其与控件关联?(我知道我可以手动计算位置,但当您意识到调整窗口大小不一定会影响控件时,这会变得非常复杂,因此很难知道何时更新位置) 我不能使用弹出按钮,因为我需要一个不可轻拆的弹出窗口 如何以编程方式使UWP弹出窗口与控件关联 如果你的意思是在后面关联两个控件代码,我想这就是你想要的 通过定义的表达式可以基于另一个控件计算弹出窗口控件的属性。仅举一个简

我正在编写的行为需要将弹出窗口与控件相关联,以便弹出窗口的位置始终相对于该控件

在UWP中,弹出窗口没有可播放的placement属性。然后如何将其与控件关联?(我知道我可以手动计算位置,但当您意识到调整窗口大小不一定会影响控件时,这会变得非常复杂,因此很难知道何时更新位置)

我不能使用弹出按钮,因为我需要一个不可轻拆的弹出窗口

如何以编程方式使UWP弹出窗口与控件关联

如果你的意思是在后面关联两个控件代码,我想这就是你想要的

通过定义的
表达式
可以基于另一个控件计算
弹出窗口
控件的属性。仅举一个简单的例子,下面的代码片段使
弹出窗口始终具有
Offset.X
50
,基于另一个视觉对象的
Offset

private void btnmain_Click(object sender, RoutedEventArgs e)
{
    _visualA.Offset = new System.Numerics.Vector3(400, 350, 350);
}

private void btntest_Click(object sender, RoutedEventArgs e)
{
    _visualA = ElementCompositionPreview.GetElementVisual(btnmain);
    _visualB = ElementCompositionPreview.GetElementVisual(pop); 
    compositor = _visualB.Compositor; 
    var expression = compositor.CreateExpressionAnimation("visualA.Offset.X + 50");
    expression.SetReferenceParameter("visualA", _visualA);
    _visualB.StartAnimation("Offset.X", expression);
}

对于详细计算,请根据您的场景自行进行。更多详细信息请参考。

您能给我们展示一些代码吗?这将帮助我们理解这有帮助吗@丹兹:谢谢!不完全是。。请注意,他们知道要通过编程将弹出窗口与之关联的顶级控件,然后将其作为子控件添加。对于将控件绑定到一个属性的任何控件(比如弹出型按钮知道如何做),我都需要这样做。然后将弹出窗口的位置绑定到另一个属性,该属性根据当前窗口大小和控件的位置动态计算弹出窗口的位置。如果有人在弹出窗口打开时调整窗口大小,我想它无论如何都会用light Disclose关闭。@SeanO'Neil我不希望light Disclose(这就是我不能使用弹出按钮的原因)。弹出窗口上没有placement属性,否则我就不会有问题了。或者你所说的安置是指其他什么?这是一个很好的方法。我将在本周试一试。谢谢Sunteen。现在做标记作为答案。