我有以下代码:
<Popup AllowsTransparency="True"
PopupAnimation="Fade"
Placement="MousePoint" VerticalAlignment="Top" HorizontalAlignment="Center"
IsOpen="{Binding IsPopupOpen}"
StaysOpen="True" Margin="50">
<Label Style="{StaticResource PopupInformationLabelStyle}"
Content="{Binding EnumPopupText}" Margin="10,10,10,10" />
</Popup>
此弹出窗口正好显示在鼠标位置。实际上我在DataGridTextColumn编辑时显示了这个弹出窗口。因此,当我双击它时,它正好出现在文本框中。所以问题是:
是否可以向MousePosition添加更多像素?粗略地说我需要Placement =“MousePosition”+50。
提前致谢
答案 0 :(得分:1)
看看另一个类似的答案:how to place a popup on a different screen。许多链接应该适用于您的问题。你可以得到X,Y值并添加你需要的任何东西。
具体来说:PlacementMode Enumeration
有MousePoint
。
来自MousePoint
枚举的MSDN:
Popup控件相对于鼠标光标尖端的位置,以及由HorizontalOffset和VerticalOffset属性值定义的偏移量。如果水平或垂直屏幕边缘遮挡弹出窗口,则它会在与遮蔽边缘相反的方向打开。如果相反的屏幕边缘也遮挡了弹出窗口,则它会与模糊的屏幕边缘对齐。
答案 1 :(得分:0)
也许这有效..
Point current = e.GetPosition(this);
myPopup.HorizontalOffset = current.X + offset;
myPopup.VerticalOffset = current.Y + offset;
myPopup.IsOpen = true;
答案 2 :(得分:-3)
将“展示位置”设置为“自定义”,然后在代码中实现以下内容:
Popup1.CustomPopupPlacementCallback = new CustomPopupPlacementCallback(placePopup);