代码之家  ›  专栏  ›  技术社区  ›  Shahar Prish

如何以编程方式使UWP弹出菜单与控件关联?

  •  0
  • Shahar Prish  · 技术社区  · 7 年前

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

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

    我不能使用弹出式按钮,因为我需要一个不可轻视的弹出式按钮。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sunteen Wu    7 年前

    如何以编程方式使UWP弹出菜单与控件关联?

    如果你的意思是在后面关联两个控件代码,我认为 ExpressionAnimation 是你想要的。

    的属性 Popup 控件视觉可基于另一个控件计算 Expression 您定义了。仅作为一个简单的示例,下面的代码片段使 弹出窗口 总是有 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);
    }
    

    有关详细计算,请根据您的场景自行进行。更多详情请参考 WindowsUIDevLabs