求 获取 可移动控件的坐标?

dui_cky 2010-07-29 11:47:25
RT: 加了个 行为
Testbox tbSample = new textbox();
MouseDragElementBehavior m = new MouseDragElementBehavior();
Interaction.GetBehaviors(tbSample).Add(m);

当tbSample 移动以后 如何获取 它的坐标?
tbSample.GetValue(Canvas.TopProperty),tbSample.GetValue(MouseDragElementBehavior.XProperty),tbSample.Margin.Top.ToString() 这三种方法行不通。。 求正解?
...全文
153 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yuwa227 2010-12-08
学习学习,正是我要找的问题
回复
dui_cky 2010-07-30
[Quote=引用楼主 dui_cky 的回复:]
RT: 加了个 行为
Testbox tbSample = new textbox();
MouseDragElementBehavior m = new MouseDragElementBehavior();
Interaction.GetBehaviors(tbSample).Add(m);

当tbSample 移动以后 如何获取 它的坐标?
tbSample.GetVal……
[/Quote]
搞定了 谢了!!
回复
Sunpire 2010-07-30
使用坐标变换,正解。
不过并非都要相对于 Application.Current.RootVisual 来进行坐标变换的, 相对于任何一个父容器或者是 任何UIElement 都可以进行坐标变换。

或者转换为 MatrixTransform

MatrixTransform transform = source.TransformToVisual(container) as MatrixTransform;

其中 source 为 UIElement ,为要取得坐标的控件;
container 为 UIElement ,为 source 的参照物,一般可以取上级容器。

得到 transform.Matrix.OffsetX 、transform.Matrix.OffsetY
回复
dui_cky 2010-07-30

冷老大,别的不说,谢了! 你对silverlight社区做的贡献大家都是有目共睹的
我想大家心里都非常非常感激你!!!
回复
jv9 2010-07-30
使用offset获取位置:


GeneralTransform mygt = this.TransformToVisual(Application.Current.RootVisual as UIElement);
Point offset = mygt.Transform(new Point(0, 0));
double controlTop = offset.Y;
double controlLeft = offset.X;

回复
发动态
发帖子
WPF/Silverlight
创建于2007-09-28

8566

社区成员

WPF/Silverlight相关讨论
申请成为版主
社区公告
暂无公告