在获取wpf自定义组件的宽度和高度的时候,如果直接在InitializeComponent();后面用this.Width,和this.ActualWidth会得到Nan和0,因为组件还没有被计算大小。
要获得组件的宽度和高度可以添加Loaded事件的响应函数,在事件函数里面在用this.Width就可以得到组件的宽度。
public lineNet() { InitializeComponent(); Loaded += delegate { Line line11 = new Line(); Line line12 = new Line(); Line line21 = new Line(); Line line22 = new Line(); //定义参考线颜色宽度 line11.StrokeThickness = 2; line11.Stroke = Brushes.Blue; line12.StrokeThickness = 2; line12.Stroke = Brushes.Blue; line21.StrokeThickness = 2; line21.Stroke = Brushes.Blue; line22.StrokeThickness = 2; line22.Stroke = Brushes.Blue; //定义参考线起止坐标 line11.X1 = 0; line11.Y1 = 0; line11.X2 = this.width; line11.Y2 = 0; line12.X1 = 0; line12.Y1 = this.height; line12.X2 = this.width; line12.Y2 = this.height; line21.X1 = 0; line21.Y1 = 0; line21.X2 = 0; line21.Y2 = this.height; line22.X1 = this.width; line22.Y1 = 0; line22.X2 = this.width; line22.Y2 = this.height; MainCanvas.Children.Add(line11); MainCanvas.Children.Add(line12); MainCanvas.Children.Add(line21); MainCanvas.Children.Add(line22); }; }