我正在使用FileToImageConverter
來顯示基於文件擴展名的圖像。IValueConverter - FileImageConverter - 不顯示通用圖像
對於普通擴展名.xlsx,.doc,.docx,一切都適用,因爲我在Media文件夾中具有該擴展名的圖像,但是如果文件名的擴展名不在項目的媒體文件夾中,那麼沒有圖像正在顯示。我想嘗試爲文件夾中沒有擴展名的所有文件擴展名分配一個通用圖像。
因此,如果文件是test.sql,那麼將file_extension_file.png分配爲通用圖標。正常的圖標都存儲像file_extension_xlsx.png
原來這裏是轉換器
public class ConvertFileImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value as string == string.Empty) return null;
string file_extension = System.IO.Path.GetExtension(value.ToString());
file_extension = file_extension.Replace(".", "");
var file = @"/Media/file_extension_" + file_extension + ".png";
ImageSource src = new BitmapImage(new Uri(file, UriKind.Relative));
return src;
}
}
這是打在try仍然
if (value as string == string.Empty)
return null;
string file_extension = System.IO.Path.GetExtension(value.ToString());
file_extension = file_extension.Replace(".", "");
var file = @"/Media/file_extension_" + file_extension + ".png";
var genericfile = @"/Media/file_extension_file.png";
try
{
return new BitmapImage(new Uri(file, UriKind.Relative));
}
catch (FileNotFoundException exception)
{
return new BitmapImage(new Uri(genericfile, UriKind.Relative));
}
更新:下面是一些圖像等的
這是設置每個即使擴展名位於文件夾中,也存在使用!文件的默認圖像。傳遞中的樣子Test.doc的,test.docx,TEST.SQL,TEST.XLS等
當地人都呈現以下
private static ImageSource DefaultImage = new BitmapImage(new Uri(@"/Media/file_extension_file.png", UriKind.Relative));
public object Convert(object value,
Type targetType, object parameter, CultureInfo culture)
{
var filename = (string)value;
if(string.IsNullOrWhiteSpace(filename))
{
return DefaultImage;
}
var extension = Path.GetExtension(filename).Replace(".", string.Empty);
var imageName = @"/Media/file_extension_" + extension + ".png";
if (!File.Exists(imageName))
{
return DefaultImage;
}
return new BitmapImage(new Uri(imageName, UriKind.Relative));
}
的文件名:高亮紅色是它是什麼尋找媒體文件夾,但沒有一個,所以我試圖顯示默認圖像。
再次感謝Phil,!File.Exists現在讓它爲每個文件返回一個默認值。我認爲這是我設置這一行的方式var imageName = @「\ Media \ file_extension_」+ extension +「.png」; – KeyboardFriendly
您可能需要在那裏有一個驅動器號「c:\ ...」。然後你的Uri可能需要成爲UriKind.Absolute。 – Phil
謝謝,檢查,我添加了一些文件的圖像 – KeyboardFriendly