【问题标题】:Popup Move in WPFWPF中的弹出移动
【发布时间】:2019-09-18 14:50:19
【问题描述】:

我在我的 WPF 窗体上创建了一个 WPF 弹出控件。当我单击时,弹出窗口打开并且它也正确移动。但是当我单击弹出窗口中的文本框时,弹出窗口会稍微向主窗口的边缘移动。当我点击弹出窗口中的文本框时,我不想移动弹出窗口?

    private void MyAddJobPopup_MouseMove(object sender,System.Windows.Input.MouseEventArgs e) {
    if (!MyAddJobPopup.IsOpen)
       MyAddJobPopup.IsOpen = true;

    if (e.LeftButton == MouseButtonState.Pressed) {
            var mousePosition =   e.GetPosition(this.HardwareElectricalTbl);
         this.MyAddJobPopup.HorizontalOffset = mousePosition.X;
          this.MyAddJobPopup.VerticalOffset = mousePosition.Y;
        }
    }

【问题讨论】:

  • 我认为鼠标位置坐标是相对于 'this.HardwareElectricalTbl' 的。通过设置 Horizo​​ntalOffset 和 VerticalOffset,您可以移动弹出窗口的位置。那是你要的吗?设置偏移量还有什么目的?

标签: c# wpf xaml


【解决方案1】:

在设置 Horizo​​ntalOffset 和 VerticalOffset 时,它们使用窗口的左上角位置,这不是您要设置的位置,您希望将其设置为鼠标位置减去鼠标之前与窗口的相对位置。

为此,请在您开始单击时保存以下位置(例如在 onClick 事件中):

//both should be negative so adding will actually remove from the location which is what you want
float offsetX = this.MyAddJobPopup.HorizontalOffset - mousePosition.X;
float offsetY = this.MyAddJobPopup.VerticalOffset- mousePosition.Y;

然后在您设置位置时添加它们:

this.MyAddJobPopup.HorizontalOffset = mousePosition.X + offsetX;
this.MyAddJobPopup.VerticalOffset = mousePosition.Y + offsetY;

【讨论】:

  • 它在 onclick 事件中工作(即点击文本框时弹出窗口不移动)。但我想弹出可移动。它不起作用......感谢您的快速响应。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多