
你的代码的确会出现你所讲的现象。fLocationY 与 fLocationX 是父窗口在显示器的位置,而不是你所期望的 (0,0)坐标;wwdTop与wwdLeft是它在父窗口的位置,你移动父窗口的话,wwd窗口当然会改变位置,你要wwd在父窗口的中间可用如下代码:
wwdLeft = (fWidth - wwdWidth) / 2;
wwdTop = (fHeight - wwdHeight) / 2;
如果窗口是canvas就是
Ellipse ellipse = new Ellipse();
ellipseWidth = 50;
ellipseHeight = 100;
ellipseStroke = new SolidColorBrush(ColorsBlue);
ellipseFill = new SolidColorBrush(ColorsGreen);
ellipseSetValue(CanvasLeftProperty, 50D);
ellipseSetValue(CanvasTopProperty, 100D);
canvasChildrenAdd(ellipse);
如果是Grid
ellipseSetValue(CanvasLeftProperty, 50D);
ellipseSetValue(CanvasTopProperty, 100D);
这两句就改成
ellipseSetValue(GridColumnProperty, 1);
ellipseSetValue(GridRowProperty, 1);
数据都是举例
一般来说,Wpf中的布局控件大多都是相对定位(网格,流式,面板等),如果我们要改变控件在布局中的位置可以用Margin,Padding等类似HTML中的方式,虽然说这种方式在WinForm也可用,但是WPF中的布局方式与灵活性已经更接近与HTML了WPF中也保留了相对传统的布局方式,如在Canvas容器中可以用SetLeft(),SetTop()来绝对定位总之,根据实际情况选择最适合的方式来获取控件坐标或定位尽管可以在任意WPF项目中编写自定义元素,但是通常希望在专门的类库程序集(DLL)中放置自定义元素,用于在多个程序之前共享自定义元素。
为确保具有正确得程序集引用和名称空间导入,我们在创建项目时选择Custom Control Library(WPF)项目类型。在类库中,可创建任意数量的控件。
想要写好自定义控件,这个继承关系必须要记着,这些基类工作在WPF的哪个层一定要搞清楚。
如下书写:
public static T GetElementUnderMouse<T>() where T: UIElement
{
return FindVisualParent<T>(MouseDirectlyOver as UIElement);
}
以上就是关于我用c#的wpf做了一个等待的窗口,等待窗口想定位到父窗口的中间,总是计算不出位置全部的内容,包括:我用c#的wpf做了一个等待的窗口,等待窗口想定位到父窗口的中间,总是计算不出位置、wpf 我在后台画了一个Ellipse,怎么设置坐标啊!! 急急急!!、wpf怎么查看控件定义处等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)