如何以编程方式将UWP Popup与控件关联?

时间:2018-05-11 20:34:00

标签: c# xaml uwp uwp-xaml

我写的一个行为需要将一个弹出窗口与一个控件相关联 - 这样弹出窗口的位置总是相对于该控件。

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

我不能使用弹出窗口,因为我需要一个不易被忽视的弹出窗口。

1 个答案:

答案 0 :(得分:1)

  

如何以编程方式将UWP Popup与控件关联?

如果你的意思是关联两个控制代码,我认为ExpressionAnimation就是你想要的。

可以根据您定义的Popup的另一个控件计算Expression控件视觉的属性。仅举几个简单的示例,以下代码段使Popup始终具有Offset.X50基于另一个视觉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);
}

详细计算请根据您的情况自行完成。更多详情请参考WindowsUIDevLabs