我创建了一个usercontrol只是为了包含一个Image,因为我必须使用Measureoverride和arrangeoverride方法而且我不能创建一个子类(Image是seled)...无论如何,事情就是当我调用它时.Image .Measure(SizeIwantto赋予图像)图像的desiredSize字段未设置...任何人都知道为什么? 我之前一直在管理Layouting方法,它有效... 这是代码(我已经检查了所有其他尺寸,但没有一个是0或NaN)
protected override Size MeasureOverride(Size availableSize)
{
//the size that the element wants to have
Size imageDesiredSize = new Size();
imageDesiredSize = availableSize;
//if the current element's size is a pertentage
if ((futureHeight != 0))
{
imageDesiredSize.Height = availableSize.Height * futureHeight / 100;
}
if ((futureWidth != 0))
{
imageDesiredSize.Width = availableSize.Width * futureWidth / 100;
}
if (widthWrap)
{
imageDesiredSize.Width = ((BitmapImage)this.Source).PixelWidth;
}
if (heightWrap)
{
imageDesiredSize.Height = ((BitmapImage)this.Source).PixelHeight;
}
System.Diagnostics.Debug.WriteLine("imagedesired" + imageDesiredSize);
this.image.Measure(imageDesiredSize);
System.Diagnostics.Debug.WriteLine("desiredsize" + this.image.DesiredSize);
return imageDesiredSize;
}
答案 0 :(得分:0)
最后这是一个非常简单的解决方案......在UserControl的构造函数中,我添加了这一行:this.Content = image; 现在,Usercontrol的内容将在屏幕上绘制: - )