我想要的行为是:当弹出窗口打开时,应该打开它,使鼠标点位于弹出窗口边缘的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)以上和鼠标点的左边,如果我松开鼠标按钮,它就会关闭。
实现上述行为的最佳方式是什么?
答案 0 :(得分:0)
我相信通过设置属性PlacementRectangle将有助于实现此行为。
PlacementRectangle="-100,0,30,30"
<Popup IsOpen="{Binding OpenPopUp}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ClipToBounds="True"
PlacementRectangle="-100,0,30,30"
AllowsTransparency="True"
PopupAnimation="Scroll">
....
</Popup>
在我的情况下,它具有较少的控件,但是,因为您需要从按钮获得边距并且添加用户&#39;这会打开弹出窗口。弹出窗口一直保持到我点击取消。