在鼠标点外打开时,WPF弹出窗口关闭

时间:2015-07-24 14:36:28

标签: c# wpf popup

我想要的行为是:当弹出窗口打开时,应该打开它,使鼠标点位于弹出窗口边缘的5 px边距内。我目前的代码是:

productCategoryPopup.Placement = PlacementMode.MousePoint; productCategoryPopup.VerticalOffset = -5; productCategoryPopup.HorizontalOffset = -5;

<Popup x:Name="productCategoryPopup" IsOpen="False" StaysOpen="False" AllowsTransparency="True">...</popup>

只要弹出窗口没有自动移位,如果左上角位于鼠标点,内容太长而无法放在屏幕上,则此功能无效。所以我的偏移量被添加以确保鼠标内部有边距,现在弹出窗口打开。这反过来立即关闭弹出窗口,我认为这是因为我的mouseup落在弹出窗口之外。

为了澄清,当我在屏幕底部附近打开一个弹出窗口时会发生什么,弹出窗口打开使得它的左下角是5英尺(-5)以上和鼠标点的左边,如果我松开鼠标按钮,它就会关闭。

实现上述行为的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

我相信通过设置属性PlacementRectangle将有助于实现此行为。

 PlacementRectangle="-100,0,30,30"

XAML

 <Popup IsOpen="{Binding OpenPopUp}" 
                   HorizontalAlignment="Center" 
                   VerticalAlignment="Center" 
                   ClipToBounds="True"
                   PlacementRectangle="-100,0,30,30"
                   AllowsTransparency="True"
                   PopupAnimation="Scroll">
        ....
</Popup>

输出

enter image description here

在我的情况下,它具有较少的控件,但是,因为您需要从按钮获得边距并且添加用户&#39;这会打开弹出窗口。弹出窗口一直保持到我点击取消。