4

我有一个非常简单的应用程序,按钮上有一个处理程序,显示一个弹出窗口:

private void Button_Click(object sender, RoutedEventArgs e)
{
    Popup popup =
        new Popup
        {
            Width = 200,
            Height = 20,
            Child = new Rectangle { Fill = Brushes.Fuchsia },
            PlacementTarget = (Button)sender,
            Placement = PlacementMode.Bottom,
            IsOpen = true,
        };
}

它产生以下结果:

实际弹出行为

通过将放置模式更改为 PlacementMode.Custom 并添加回调(省略),我可以实现以下功能:

所需的弹出行为

但是,我希望这将是 PlacementMode.Bottom 的默认行为。来自 MSDN:

PlacementMode = 底部

Popup 控件的位置,控件将其上边缘与 PlacementTarget 的下边缘对齐,并将其左边缘与 PlacementTarget 的左边缘对齐。

MSDN 图片

我是误读了文档还是做错了什么?为什么我的简单应用程序看起来/行为不像文档所说的那样(至少我目前是如何阅读的)它应该?

4

2 回答 2

3

这是在 PC 还是平板电脑上运行?显然,平板电脑上的“惯用手”设置会改变弹出窗口的对齐方式。(也许还要看看从右到左的语言是否是一个因素?)

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/19ef3d33-01e5-45c5-a845-d64f9231001c

除此之外,您是否尝试过使用 XAML 方法而不是代码隐藏?

于 2012-09-19T00:35:07.883 回答
0

我今天遇到了同样的问题 - 我认为您可以使用其他 2 个属性来调整弹出窗口的位置(Horizo​​ntalOffset 和 VerticalOffset - 可以采用正数和负数)

http://www.c-sharpcorner.com/resources/699/how-to-position-a-popup-in-wpf.aspx上的示例

于 2013-02-17T09:09:41.130 回答