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