我像这样在画布上实例化新的UI元素:
public class MainForm :Canvas
{
List<BannerImage> bannerList;
AddImages()
{
bannerImage = new BannerImage("title", "content");
//accompanied with animation
Children.Add(bannerImage);
bannerList.Add(bannerImage);
}
我需要调用bannerImages以获取它们当前的位置,以下代码可行:
foreach(bannerItem in bannerList)
{
double rightPosition = Canvas.GetRight(bannerItem);
}
但是我无法完成以下操作:
bannerItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)
Size s = bannerItem.DesiredSize;
这通常最终会成为
{0,0}
为什么我可以获取画布上物品的位置,但无法获取其大小?
BannerImage
类由什么组成? - dhilmathyBannerImage
的.NET
类,这意味着它是由您定义的类。因此,除非我们知道像DesiredSize
和Measure()
这样的方法/属性是做什么的,否则无法回答您的问题。 - SachCanvas
将返回0作为其所需大小,因为它会根据所告知的大小进行调整。由于你在派生的Canvas
中有子控件,你需要找出你需要的大小并返回它。 - pstrjds