use*_*708 13 .net c# wpf wpf-controls uielement
我正在努力扩展Microsoft调整大小Adorner示例,并且需要能够在拖动左下拖动句柄之后重新定位元素.
因此,如果我有一个150宽的文本框,在我的表格上有35个高位,左下方的拖动手柄将宽度更改为200宽,文本框的右手保持不变,但左手边缘向左移动.
所以我需要知道UIElement的左上角坐标.我尝试过Canvas.GetLeft和Canvas.GetTop,但是它们返回的NaN令人困惑.
我刚刚尝试了VisualTreeHelper.GetOffset,它确实返回了一个偏移,但是当你尝试在元素的arrange方法中使用它时它会消失,大概是因为偏移中的值太高了.
在Wpf之前的几天,坐标系非常简单,wpf让我觉得过于复杂.
Bil*_*ell 21
如果有人只想要控件的屏幕坐标:
Point targetLoc = targetCtrl.PointToScreen(new Point(0, 0));
Run Code Online (Sandbox Code Playgroud)
(这与线程的描述不符,但它确实与标题匹配.想象它可能会帮助人们从搜索结果中获取)
您可以将坐标转换UIElement为其父坐标.在你的情况下,它是一个表格.以下是返回视觉坐标的方法示例:
private Point GetPosition(Visual element) {
var positionTransform = element.TransformToAncestor(MyForm);
var areaPosition = positionTransform.Transform(new Point(0, 0));
return areaPosition;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17530 次 |
| 最近记录: |