動画ファイルもサムネイル表示出来るようになりましたが、
画像ファイルとの区別をするために枠を付けます。
ソースコード
まずXAMLでサムネイル画像の表示領域にBorderで枠を付けます。
基本は透明で見えませんがすが、ThumbBorderBrushをバインディングすることで特定のファイルには色を付ける作戦です。
MainWindow.xaml
<ListView.ItemTemplate>
<DataTemplate>
<Border
BorderThickness="4"
CornerRadius="6"
BorderBrush="{Binding ThumbBorderBrush}"
Background="Transparent"
Margin="5">
<StackPanel Margin="5" Width="256">
<Image
Source="{Binding Thumb}"
Width="256" Height="256"
Stretch="None" />
<TextBlock
Text="{Binding DisplayName}"
TextAlignment="Center"
TextWrapping="Wrap" />
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
バインディング元のクラスにThumbBorderBrushプロパティを追加。
コンストラクタで、拡張子を判定し、
コンテナ系と動画系で異なる色のブラシをセット
FileItem.cs
public Brush? ThumbBorderBrush {get; set;} = null;
public FileItem(string path, string displayName, ImageSource icon, BitmapSource? thumb)
{
Path = path;
DisplayName = displayName;
Icon = icon;
Thumb = thumb;
if (ImageMagicHelper.IsSupportedContainer(path))
{
ThumbBorderBrush = Brushes.YellowGreen;
}
if (ImageMagicHelper.IsSupportedMovie(path))
{
ThumbBorderBrush = Brushes.OrangeRed;
}
}
これだけで枠が出来上がります。
実行例
動画ではサムネイルに切り替えると一瞬でサムネイル表示に成りますが、
これは、キャッシュが効いているせいで、
実際は、時間を掛けて少しずつサムネイル画像が表示される感じです。
感想
とりあえずやりたいことは一通り確認できたので、
アプリケーションランチャーのタブとして組み込みたいと思います。

アプリケーションランチャーのタブとして組み込みたいと思います。

WPFシンプルなアプリケーションランチャー3
以前作成したアプリケーションランチャーにワーカーで処理を別スレッドに回す機能と、UserControlをタブに割り当てる機能を、組み込んで見ました。ソースコードファイル名:SimpleLauncherEx.csproj<Project Sd...


コメント