我的图片绑定不断抛出此错误:
必须在与DependencyObject相同的线程上创建DependencySource。
我写了一篇IValueConverter
,我认为会解决,但似乎不是。
public class FrozenImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ImageSource image = value as ImageSource;
if (image != null)
{
if (image.Dispatcher != null)
{
if (image.Dispatcher.CheckAccess())
{
ImageSource returnImage = new BitmapImage();
returnImage = image;
returnImage.Freeze();
return returnImage;
} else return image.Dispatcher.Invoke(() => Convert(value, targetType, parameter, culture));
} else return image;
} else return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
我错过了什么或者这是不可能的吗?
还尝试了一个简化版本,因为不需要调度程序 ,这也有同样的错误:
public class FrozenImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ImageSource image = value as ImageSource;
if (image != null)
{
ImageSource returnImage = image.Clone();
returnImage.Freeze();
return returnImage;
} else return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
答案 0 :(得分:0)
显然这是不可能的,因为看起来异常是在IValueConverter
有机会完成工作之前抛出...如果有人知道另一种方法去解决这个问题,那么不需要迭代源集合并将所有图像设置为冻结请告诉我。