Bra*_*onS 81 wpf wpf-positioning
我想在双击时获得与窗口/根元素相关的元素的绝对位置.元素在它的父元素中的相对位置是我可以看到的,而我想要达到的是相对于窗口的点.我已经看到了如何在屏幕上获取元素点的解决方案,但不是在窗口中.
Rob*_*nee 119
我认为BrandonS想要的不是鼠标相对于根元素的位置,而是一些后代元素的位置.
为此,有TransformToAncestor方法:
Point relativePoint = myVisual.TransformToAncestor(rootVisual)
.Transform(new Point(0, 0));
Run Code Online (Sandbox Code Playgroud)
myVisual
双击的元素在哪里,rootVisual
是Application.Current.MainWindow或者你想要的位置相对于什么.
Fil*_*lip 37
要获得窗口中UI元素的绝对位置,您可以使用:
Point position = desiredElement.PointToScreen(new Point(0d, 0d));
Run Code Online (Sandbox Code Playgroud)
如果您在用户控件中,并且只想在该控件中使用UI元素的相对位置,只需使用:
Point position = desiredElement.PointToScreen(new Point(0d, 0d)),
controlPosition = this.PointToScreen(new Point(0d, 0d));
position.X -= controlPosition.X;
position.Y -= controlPosition.Y;
Run Code Online (Sandbox Code Playgroud)
And*_*eas 17
将此方法添加到静态类:
public static Rect GetAbsolutePlacement(this FrameworkElement element, bool relativeToScreen = false)
{
var absolutePos = element.PointToScreen(new System.Windows.Point(0, 0));
if (relativeToScreen)
{
return new Rect(absolutePos.X, absolutePos.Y, element.ActualWidth, element.ActualHeight);
}
var posMW = Application.Current.MainWindow.PointToScreen(new System.Windows.Point(0, 0));
absolutePos = new System.Windows.Point(absolutePos.X - posMW.X, absolutePos.Y - posMW.Y);
return new Rect(absolutePos.X, absolutePos.Y, element.ActualWidth, element.ActualHeight);
}
Run Code Online (Sandbox Code Playgroud)
将relativeToScreen
参数设置true
为从整个屏幕的左上角false
放置或从应用程序窗口的左上角放置.
归档时间: |
|
查看次数: |
110371 次 |
最近记录: |