我似乎无法弄清楚如何设置边距对应于鼠标光标所在的位置。
示例代码:
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);
在此感谢任何帮助。
答案 0 :(得分:-1)
如果您只提供左侧和顶部,则连接器将向网格的右下部分移动。
此外,下面概述了适应连接器空间的修复方法:
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需要减去(而不是添加)连接器大小的一半。