我目前正在使用数据绑定WPF图像:
<Image Source="{Binding ThumbFile}" />
简单足够。
现在,为此Image添加缓存(我希望能够在加载后操作/删除本地文件)。我发现你可以在。
中的标签上添加一个CacheOption =“OnLoad”<Image>
<Image.Source>
<BitmapImage UriSource="{Binding Path=ThumbFile, Converter={StaticResource myConverter2}}" />
</Image.Source>
</Image>
然后我必须有一个转换器将本地文件转换为BitmapImage。
<local:LocalUriToImageConverter x:Key="myConverter2"/>
和
public class LocalUriToImageConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
{
return null;
}
if (value is string)
{
value = new Uri((string)value);
}
if (value is Uri)
{
System.Windows.Media.Imaging.BitmapImage bi = new System.Windows.Media.Imaging.BitmapImage();
bi.BeginInit();
//bi.DecodePixelWidth = 80;
bi.DecodePixelHeight = 60;
bi.UriSource = (Uri)value;
bi.EndInit();
return bi;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("The method or operation is not implemented.");
}
}
出于某种原因,这甚至都没有开始起作用。没有错误,但控件似乎没有绑定。即使控件创建了许多实例,也无法获得ThumbFile属性和转换器的get中的断点。切换回另一个Image Source标记可以正常工作。
答案 0 :(得分:0)
我无法从您的代码中看出发生了什么,但我会使用Snoop深入了解它,看看发生了什么。您应该能够看到任何绑定错误,并查看DataContext
上Image
的内容,并确保DataContext上的ThumbFile
属性符合您的预期。
答案 1 :(得分:0)
我遇到了同样的问题,并且在BitmapImage的UriSource属性上使用时,从未找到过使用任何转换器进行绑定的方法。我认为以这种方式使用并不意味着。
但是,我认为以下代码是等效的,应该适用于您的情况(在我的工作中):
<Image Source="{Binding ThumbFile, Converter={StaticResource myConverter2}}" />