WPF 在指定的位置选择控件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 在指定的位置选择控件。相关的知识,希望对你有一定的参考价值。

通过鼠标点击的方法:
WpfControl wc = new WpfControl();
Mouse.Click(wc);
int px = Control.MousePosition.X;
int py = Control.MousePosition.Y
可以得到这个wpfedit控件的位置。
我可以得到wpfedit的parentcontrol,我想很快的通过它位置定位来寻找这个控件,如果实现?
不用 wti.SearchProperties[WpfTreeItem.PropertyNames.Name] =xxx这种方法,现在就是这种方法太慢。
如果控件的位置不能获取的,位置为中心的发散区域是否可行呢?
求助

参考技术A 从位置出发寻找控件一般没有这么做的吧。如果你通过匹配控件名称速度太慢,那遍历父控件中的children,匹配Type行不行。还有就是将父控件中的内容做缓存处理(放到字典中)匹配Key会比你之前的方法快一些的。追问

1. 遍历children匹配type这个方法行不通,原因:一个页面上的相同控件太多;
2. 放在字典中做缓存处理没有尝试过,可以试试。
3. .NET 4.5 貌似提供了根据位置寻找可视的控件的方法。
有空研究第二条。

追答

1、如果只需要获取相对于其父级的偏移量,则可以使用以下方法:
Vector vector = VisualTreeHelper.GetOffset(myTextBlock); 偏移量保存在Vector对象中
2、相对灵活的方法可以使用 TransformToAncestor方法,这样可以获得相对于Window的偏移量
GeneralTransform generalTransform1 = myTextBlock.TransformToAncestor(this);

Point currentPoint = generalTransform1.Transform(new Point(0, 0));

在WPF中弹出winfrom窗体怎么设置出现位置

参考技术A 选中界面 是最外层那层,属性里面有个windowstartupLocation 和windowstate

以上是关于WPF 在指定的位置选择控件。的主要内容,如果未能解决你的问题,请参考以下文章

Wpf中,怎样获取Canva中指定区域上都有哪些控件?

WPF中如何设置PasswordBox控件显示原文?

wpf 控件四周扩散颜色

wpf中用啥控件来选择文件夹

wpf timePicker 时间选择控件

WPF中窗体打开的位置怎么控制?