【问题标题】:WPF Popup PlacementMode.Bottom not behaving as expectedWPF Popup PlacementMode.Bottom 未按预期运行
【发布时间】:2013-02-17 17:09:41
【问题描述】:

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

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 的左边缘对齐。

我是误读了文档还是做错了什么?为什么我的简单应用的外观/行为不像文档所说的那样(至少我目前是这样阅读的)?

【问题讨论】:

    标签: wpf popup


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是在 PC 上,但接下来我会尝试完整的 XAML 方法。
    • 我确实安装了一个触摸显示器,我认为这可能与它有关。在阅读了您的回复和相关网站中的链接后,我将使用自定义回调来绝对定位我的盒子,无论左右手习惯如何。
    • 当您在 OSX 上托管的虚拟机中运行 Windows 时也会发生这种情况。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2020-06-28
      • 2012-02-18
      • 2018-01-18
      • 2012-06-14
      • 2019-03-03
      • 2012-09-21
      相关资源
      最近更新 更多