summaryrefslogtreecommitdiff
path: root/ViewModels/Image/ImageViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ViewModels/Image/ImageViewModel.cs')
-rw-r--r--ViewModels/Image/ImageViewModel.cs38
1 files changed, 38 insertions, 0 deletions
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()));
+ }
+ }
+}