gpt4 book ai didi

c# - WPF 弹出控件 - 查找 X、Y 坐标

转载 作者:太空狗 更新时间:2023-10-29 21:52:26 25 4
gpt4 key购买 nike

我正在尝试获取弹出控件的 X、Y 坐标。我试过:

VisualTreeHelper.GetOffset(弹出窗口);

但返回的向量始终包含 X 和 Y 的 (0,0)。

弹出窗口的父级是布局根,它是一个网格。

CustomPopupPlacementCallback 也始终为其 Point 参数返回 0,0。

目标是允许用户将弹出窗口拖动到屏幕上的任何位置。我打算通过获取当前弹出窗口和鼠标位置,并在鼠标移动的相同方向上移动弹出窗口来尝试完成此操作。

--------------------更新--------------------

Chris Nicol,我已尝试使用以下代码回答您的问题,但 rootPoint 仍收到 0,0:

Xaml:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Test.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="800" Height="600">

<Grid x:Name="LayoutRoot">
<Popup x:Name="Popup" IsOpen="True" Placement="Center" Width="100" Height="100">
<Button Click="Button_Click" Content="Test" />
</Popup>
</Grid>

代码隐藏:

public partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();

// Insert code required on object creation below this point.
}

private void Button_Click(object sender, RoutedEventArgs e)
{
GeneralTransform transform = Popup.TransformToAncestor(LayoutRoot);
Point rootPoint = transform.Transform(new Point(0, 0));
}
}

最佳答案

不确定这是找出答案的最佳方法,但它确实有效:

GeneralTransform transform = controlToFind.TransformToAncestor(TopLevelControl);
Point rootPoint = transform.Transform(new Point(0, 0));

关于c# - WPF 弹出控件 - 查找 X、Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2051934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com