62 lines
1.5 KiB
C#
62 lines
1.5 KiB
C#
|
|
using Avalonia.Controls;
|
||
|
|
using Avalonia.Media.Imaging;
|
||
|
|
using System.ComponentModel;
|
||
|
|
using System.IO;
|
||
|
|
|
||
|
|
namespace ImageCatalog_2.AvaloniaViews;
|
||
|
|
|
||
|
|
public partial class LogoTabView : Avalonia.Controls.UserControl
|
||
|
|
{
|
||
|
|
public LogoTabView()
|
||
|
|
{
|
||
|
|
InitializeComponent();
|
||
|
|
DataContextChanged += OnDataContextChanged;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void OnDataContextChanged(object? sender, System.EventArgs e)
|
||
|
|
{
|
||
|
|
if (sender is not LogoTabView)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (DataContext is DataModel model)
|
||
|
|
{
|
||
|
|
model.PropertyChanged -= ModelOnPropertyChanged;
|
||
|
|
model.PropertyChanged += ModelOnPropertyChanged;
|
||
|
|
UpdateLogoPreview(model.LogoFile);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private void ModelOnPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||
|
|
{
|
||
|
|
if (e.PropertyName == nameof(DataModel.LogoFile) && sender is DataModel model)
|
||
|
|
{
|
||
|
|
UpdateLogoPreview(model.LogoFile);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private void UpdateLogoPreview(string? path)
|
||
|
|
{
|
||
|
|
var preview = this.FindControl<Avalonia.Controls.Image>("LogoPreview");
|
||
|
|
if (preview is null)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (string.IsNullOrWhiteSpace(path) || !File.Exists(path))
|
||
|
|
{
|
||
|
|
preview.Source = null;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
try
|
||
|
|
{
|
||
|
|
preview.Source = new Avalonia.Media.Imaging.Bitmap(path);
|
||
|
|
}
|
||
|
|
catch
|
||
|
|
{
|
||
|
|
preview.Source = null;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|