我正在嘗試使用Measure
方法得到MyUserControl
的實際大小之前類的建議爲我的previous question。但它不起作用。 MyUserControl
有一個ItemsControl
,它的數據綁定是List
,如下所示。通過uc.MyCollection = myCollection;
添加的項目未反映在uc.DesiredSize.Height
中。在呈現之前獲取用戶控件的實際大小
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
嘗試在調用'Mesaure()'之前在根上添加'uc'並在訪問'DesiredSize'之前執行'UpdateLayout()'。那就是我通常所做的。 – kev 2011-12-29 08:31:51
這不起作用。 – devnull 2011-12-29 08:37:19
@neutrino:什麼不工作?值是。 0還是不準確? – Tigran 2011-12-29 08:59:32