简而言之:不,Silverlight 4 中没有新功能。WriteableBitmapEx试图弥补缺失的功能。
关于您的真正问题:您应该向BitmapImage.ImageFailed事件添加一个处理程序,以查看在下载图像时是否有错误。您应该在ImageOpened事件处理程序中创建 WriteableBitmap。
var image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = null;
image.ImageOpened += (s, e) => newImage = new WriteableBitmap(image);
另请注意,允许跨域引用。有关详细信息,请参阅MSDN 页面。您应该将图像放入 Web 项目的 ClientBin 文件夹并使用相对路径。
作为替代方案,您还可以将图像作为资源编译到程序集中并从那里加载。WriteableBitmapEx有一个扩展方法可以使这个任务更容易一些。但是请记住,这会增加程序集的大小,并且初始 XAP 加载时间会增加。
// Load an image from the calling Assembly's resources only by passing the relative path
var writeableBmp = new WriteableBitmap(0, 0).FromResource("example.png");