Tôi đang cố gắng lấy ActualSize của MyUserControl
trước khi được hiển thị bằng cách sử dụng Measure
methode của UserControl
lớp như được đề xuất cho số previous question của tôi. Tuy nhiên nó không hoạt động. MyUserControl
có một số ItemsControl
được mã hóa theo số List
như được hiển thị bên dưới. Các mục được thêm vào thông qua uc.MyCollection = myCollection;
không được phản ánh trong uc.DesiredSize.Height
.Nhận kích thước thực tế của UserControl trước khi hiển thị
MyUserControl uc= new MyUserControl();
uc.AName = "a1";
uc.Width = 194;
uc.MyCollection = myCollection; //myCollection is a List databound to ItemsControl inside MyUserControl
uc.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
uc.Arrange(new Rect(0, 0, uc.DesiredSize.Width, uc.DesiredSize.Width)); //Needed?
uc.UCHeight = uc.DesiredSize.Height; //size of items databound to ItemsControl not reflected here
uc.UCWidth = uc.DesiredSize.Width;
uc.Margin = new Thickness(34, 42, 0, 0);
myRoot.Children.Add(uc); //myRoot is Canvas
Thử thêm 'uc' vào thư mục gốc trước khi gọi' Mesaure() 'và thực hiện' UpdateLayout() 'trước khi truy cập' DesiredSize'. Đó là những gì tôi thường làm. – kev
Điều đó không hoạt động. – devnull
@neutrino: những gì không hoạt động? Các giá trị là. 0 hoặc không chính xác? Giá trị – Tigran