【发布时间】:2014-05-29 07:00:21
【问题描述】:
我有一个具有如下绑定设置的图像控件:
<Image Stretch="Uniform" Source="{Binding Path=CurrentItem, Converter={StaticResource ImgConverter}, IsAsync=True}"/>
ImgConverter 是:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string uri = null;
Compressor.Unzip((value as Zipfile));
uri = string.Format("{0}{1}.jpg", Compressor.TempPath, value.ToString());
return uri;
}
Compressor.Unzip(...) 方法确实需要一些时间。我设置了绑定IsAsync=True,但它不起作用(不在转换器上,但只在路径上?)。如何异步处理?
【问题讨论】:
-
冻结片刻直到加载完毕。
-
不幸的是,
Binding.IsAsync属性只影响属性获取器,而不影响绑定转换器。所以你可以考虑用一个额外的视图模型属性替换转换器,比如CurrentImage,你可以在没有转换器的情况下异步绑定。 -
@Clemens 有样品吗?我不熟悉MVVM。谢谢
-
只需将另一个属性添加到定义
CurrentItem的类。 -
@Clemens 我使用了
IsSynchronizedWithCurrentItem,所以CurrentItem不是我自己定义的。
标签: c# wpf asynchronous binding converter