如何在鼠标光标

时间:2015-07-30 10:32:32

标签: c# wpf

我似乎无法弄清楚如何设置边距对应于鼠标光标所在的位置。

示例代码:

protected override void OnMouseMove(MouseEventArgs e)
{
  base.OnMouseMove(e);

  Connector connector = this.Template.FindName("PART_Connector", this) as Connector;
  double marginLeft = e.GetPosition(this).X - (connector.Width / 2);
  double marginTop = e.GetPosition(this).Y - (connector.Height / 2);

  connector.Margin = new Thickness(marginLeft, marginTop, 0, 0);
}

使用边距定位的连接器始终偏离应有的位置。

有什么好建议吗?

如果我设置这样的边距,它将起作用但连接器减少到一个点。我希望连接器为12x12

marginLeft = e.GetPosition(this).X;
marginTop = e.GetPosition(this).Y;
marginRight = this.DesiredSize.Width - e.GetPosition(this).X;
marginBottom = this.DesiredSize.Height - e.GetPosition(this).Y;

connector.Margin = new Thickness(marginLeft, marginTop, marginRight, marginBottom);

当我重新缩放边距以为连接器提供空间时,连接器就会消失:

marginLeft = e.GetPosition(this).X - (connector.Width / 2);
marginTop = e.GetPosition(this).Y - (connector.Height / 2);
marginRight = this.DesiredSize.Width - e.GetPosition(this).X + (connector.Width / 2);
marginBottom = this.DesiredSize.Height - e.GetPosition(this).Y + (connector.Height / 2);

在此感谢任何帮助。

1 个答案:

答案 0 :(得分:-1)

好的,我修好了。对于任何对解决方案感兴趣的人,需要注意的是你需要提供保证金的所有4个方面。

如果您只提供左侧和顶部,则连接器将向网格的右下部分移动。

此外,下面概述了适应连接器空间的修复方法:

marginLeft = e.GetPosition(this).X - (connector.Width / 2);
marginTop = e.GetPosition(this).Y - (connector.Height / 2);
marginRight = this.DesiredSize.Width - e.GetPosition(this).X - (connector.Width / 2);
marginBottom = this.DesiredSize.Height - e.GetPosition(this).Y - (connector.Height / 2);

注意marginRight和marginTop需要减去(而不是添加)连接器大小的一半。