diff options
Diffstat (limited to 'ViewModels/Image')
| -rw-r--r-- | ViewModels/Image/ImageLoadedViewModel.cs | 26 | ||||
| -rw-r--r-- | ViewModels/Image/ImageViewModel.cs | 10 |
2 files changed, 23 insertions, 13 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); } } } diff --git a/ViewModels/Image/ImageViewModel.cs b/ViewModels/Image/ImageViewModel.cs index 3b41919..4b17343 100644 --- a/ViewModels/Image/ImageViewModel.cs +++ b/ViewModels/Image/ImageViewModel.cs @@ -1,8 +1,6 @@ - -using Avalar.Models.Interfaces; +using Avalar.Models.Interfaces; using Avalar.ViewModels.Image; using Avalar.Views; -using Avalonia.Media.Imaging; using ReactiveUI; using System; using System.Linq; @@ -27,9 +25,7 @@ namespace Avalar.Viewmodels.Image public object ChildViewModel { get => m_ChildViewModel; - set { - this.RaiseAndSetIfChanged(ref m_ChildViewModel, value); - } + set => this.RaiseAndSetIfChanged(ref m_ChildViewModel, value); } public async void OpenFile() @@ -37,7 +33,7 @@ namespace Avalar.Viewmodels.Image var result = await ViewService.ShowOpenImageFileDialog().ConfigureAwait(true); if (result.Length != 1) return; - ChildViewModel = new ImageLoadedViewModel(ImageModel.LoadImage(result.First())); + ChildViewModel = new ImageLoadedViewModel(ImageModel.LoadImage(result.First()), ImageModel); } } } |
