データベースから返されたファイルタイプごとImage
にを表示しようとしています。ListBox
以下は私が使用しているコードです。私の問題は、プロパティをデータベースから 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