目标是从网址异步获取图像,然后将其设置为BitmapSource
viewmodel属性(在视图中为数据绑定)。
我可以使用LoadImageFromUrl
来获取Splat.IBitmap
,但我无法弄清楚如何将其连接到BitmapSource
。事实上,我不确定我是否正确使用这种方法。
这就是我所拥有的:
using Akavache;
using System.Reactive.Linq;
// ...others...
var myViewModel = ...;
var url = @"http://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png";
BlobCache.LocalMachine.LoadImageFromUrl(url, false, 200, 183)
.ObserveOnDispatcher()
// up to here, it's fine
// what goes below is the question
// I manually instantiate an Action object so as to explicitly pick that override,
// but LoadImageFromUrl returns an IObservable<Splat.IBitmap>, so I'm not picking the wrong <T> here
.Subscribe(new Action<Splat.IBitmap>(pic => {
// haha, nope: myViewModel.someBitmapSource = (BitmapSource)pic);
}), ex => Debug.WriteLine(ex));
我想到的其他事情:
Splat
- 名称空间对象,请检查Splat tests / docs:Closer。 splat自述文件说:
// ToNative always converts an IBitmap into the type that the platform
// uses, such as UIBitmap on iOS or BitmapSource in WPF
ImageView.Source = ViewModel.ProfileImage.ToNative();
很好,除了ToNative()
在这种情况下没有意义,因为它不是Splat.IBitmap
interface的成员。
现在我没有想法。
答案 0 :(得分:1)
ToNative
是IBitmap
界面的Splat extension。在此上下文中添加对Splat和using
的依赖将使该方法可用。
这是否是正确的方式,我不确定。