我试图为从数据库返回的每个 Filetype显示Image
一个。ListBox
下面是我正在使用的代码。我认为我的问题是我试图将一个属性从 db 传递给 DirectoryInfo 属性。一切都是正确的,直到我到达FileImage = di.GetFiles();
然后我得到一个异常,在 bin 文件夹中找不到文件。实现这一目标的最佳方法是什么?感谢您的任何回复。
转换器与其他转换器一起存储在一个文件夹中(不在代码后面)。
public class ConvertFileImage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value as string == string.Empty) return null;
var file = @"Media/file_" + value.ToString().Substring(1) + ".png";
ImageSource src = new BitmapImage(new Uri(file, UriKind.Relative));
return src;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
存储数据库中文件的类
public class FilesFromDb
{
public int Id { get; set; }
public byte[] Data { get; set; }
public string FileName { get; set; }
}
列表框绑定到的属性
public ObservableCollection<FilesFromDb> Files
{
get
{
return mFiles;
}
}
从文件名中获取图像的属性
public FileInfo[] FileImage { get; set; }
我正在尝试使用 foreach 循环从数据库中获取文件名并将其用于目录,但我在这里失败了。
foreach (var imagetype in Files)
{
var di = new DirectoryInfo(imagetype.FileName);
FileImage = di.GetFiles();
}
然后我绑定到 xaml 中的转换器
<converters:ConvertFileImage x:Key="ConvertFileImage"/>
这是在列表框项模板中,列表框 ItemsSource="{Binding Files}"
<Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="0">
<Image Source="{Binding Extension, Converter={StaticResource ConvertFileImage}}" HorizontalAlignment="Left" />
</Grid>
如果文件存储在本地,我可以使用这样的东西
var di = new DirectoryInfo("c:/FilesFolder"); // I think that would work, but not using a property from db