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("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; } } }