diff options
Diffstat (limited to 'ViewModels/Image/ImageLoadedViewModel.cs')
| -rw-r--r-- | ViewModels/Image/ImageLoadedViewModel.cs | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/ViewModels/Image/ImageLoadedViewModel.cs b/ViewModels/Image/ImageLoadedViewModel.cs index f9e322c..0489ac1 100644 --- a/ViewModels/Image/ImageLoadedViewModel.cs +++ b/ViewModels/Image/ImageLoadedViewModel.cs @@ -1,23 +1,37 @@ -using Avalonia.Media.Imaging; +using Avalar.Models.Interfaces; +using Avalonia.Media.Imaging; +using Avalonia.Threading; using ReactiveUI; +using System; +using System.ComponentModel; namespace Avalar.ViewModels.Image { public class ImageLoadedViewModel : ReactiveObject { - public ImageLoadedViewModel(IBitmap bitmap) + private IImageModel m_ImageModel; + + public ImageLoadedViewModel(IBitmap bitmap, IImageModel imageModel) { Bitmap = bitmap; + m_ImageModel = imageModel ?? throw new ArgumentNullException(nameof(imageModel)); + + m_ImageModel.PropertyChanged += OnImageModelChanged; + } + + private void OnImageModelChanged(object sender, PropertyChangedEventArgs e) + { + Dispatcher.UIThread.InvokeAsync(() => + { + Bitmap = m_ImageModel.LatestResult; + }); } private IBitmap m_Bitmap; public IBitmap Bitmap { get => m_Bitmap; - set - { - this.RaiseAndSetIfChanged(ref m_Bitmap, value); - } + set => this.RaiseAndSetIfChanged(ref m_Bitmap, value); } } } |
