diff options
Diffstat (limited to 'ViewModels/Image')
| -rw-r--r-- | ViewModels/Image/ImageLoadedViewModel.cs | 23 | ||||
| -rw-r--r-- | ViewModels/Image/ImageNotLoadedViewModel.cs | 15 | ||||
| -rw-r--r-- | ViewModels/Image/ImageViewModel.cs | 38 |
3 files changed, 76 insertions, 0 deletions
diff --git a/ViewModels/Image/ImageLoadedViewModel.cs b/ViewModels/Image/ImageLoadedViewModel.cs new file mode 100644 index 0000000..f9e322c --- /dev/null +++ b/ViewModels/Image/ImageLoadedViewModel.cs @@ -0,0 +1,23 @@ +using Avalonia.Media.Imaging; +using ReactiveUI; + +namespace Avalar.ViewModels.Image +{ + public class ImageLoadedViewModel : ReactiveObject + { + public ImageLoadedViewModel(IBitmap bitmap) + { + Bitmap = bitmap; + } + + private IBitmap m_Bitmap; + public IBitmap Bitmap + { + get => m_Bitmap; + set + { + this.RaiseAndSetIfChanged(ref m_Bitmap, value); + } + } + } +} diff --git a/ViewModels/Image/ImageNotLoadedViewModel.cs b/ViewModels/Image/ImageNotLoadedViewModel.cs new file mode 100644 index 0000000..bf7b65e --- /dev/null +++ b/ViewModels/Image/ImageNotLoadedViewModel.cs @@ -0,0 +1,15 @@ +using ReactiveUI; +using System.Reactive; + +namespace Avalar.ViewModels.Image +{ + public class ImageNotLoadedViewModel : ReactiveObject + { + public ImageNotLoadedViewModel(ReactiveCommand<Unit, Unit> openFileCommand) + { + OpenFileCommand = openFileCommand; + } + + public ReactiveCommand<Unit, Unit> OpenFileCommand { get; } + } +} diff --git a/ViewModels/Image/ImageViewModel.cs b/ViewModels/Image/ImageViewModel.cs new file mode 100644 index 0000000..030a95b --- /dev/null +++ b/ViewModels/Image/ImageViewModel.cs @@ -0,0 +1,38 @@ + +using Avalar.ViewModels.Image; +using Avalar.Views; +using Avalonia.Media.Imaging; +using ReactiveUI; +using System.Linq; + +namespace Avalar.Viewmodels.Image +{ + public class ImageViewModel : ReactiveObject + { + public ImageViewModel(IAvalarViewService viewService) + { + ViewService = viewService; + ChildViewModel = new ImageNotLoadedViewModel(ReactiveCommand.Create(OpenFile)); + } + + private IAvalarViewService ViewService { get; } + + private object m_ChildViewModel; + + public object ChildViewModel + { + get => m_ChildViewModel; + set { + this.RaiseAndSetIfChanged(ref m_ChildViewModel, value); + } + } + + public async void OpenFile() + { + var result = await ViewService.ShowOpenImageFileDialog(); + if (result.Length != 1) return; + + ChildViewModel = new ImageLoadedViewModel(new Bitmap(result.First())); + } + } +} |
