【发布时间】:2012-11-24 04:23:17
【问题描述】:
我正在尝试在 Windows 8 应用程序中动态设置 Image 元素的高度。为此,我需要知道源图像的高度。通常这可以通过调用 BitmapImage.PixelHeight 或 BitmapImage.DecodePixelHeight 来访问,但由于图像尚未下载,它返回 0。我可以像这样设置回调:
image = new BitmapImage(new Uri(link.Url));
System.Diagnostics.Debug.WriteLine("height :" + image.PixelHeight) // returns 0
instance.Source = image;
instance.Height = image.PixelHeight // what I'd like to do, but cant.
image.DownloadProgress += image_DownloadProgress;
static void image_DownloadProgress(object sender, DownloadProgressEventArgs e)
{
BitmapImage i = (BitmapImage)sender;
// returns the actual height I need
System.Diagnostics.Debug.WriteLine("post-download height: " + i.PixelHeight);
}
我在该回调中得到了我需要的正确像素高度。问题是我需要将它传递给要添加该图像的用户控件的实例。有没有一种方法可以 a.) 将实例传递到回调的参数中,以便我可以在那里修改它,或者 b.) 以某种方式在没有回调的情况下异步获取高度?
【问题讨论】:
标签: c# windows-8 microsoft-metro winrt-xaml